Проблема Ruby Regex text.gsub [^\\W-], '') сбои

Для построения линейных графиков необходимо добавить маркеров на свой график (graph.bullet = "round"; или любой другой формы) или курсор на графике (chart.chartCursor = new AmCharts.ChartCursor();), чтобы появлялись воздушные шары. Выберите метод, который лучше всего подходит для вашего варианта использования.

var chartData = getData();
// init wrapper
var chart = new AmCharts.AmSerialChart();
chart.dataProvider = chartData;
chart.categoryField = "date";

// config baloon
var balloon = chart.balloon;
balloon.adjustBorderColor = true;
balloon.color = "#000000";
balloon.cornerRadius = 5;
balloon.fillColor = "#FFFFFF";

var graph = new AmCharts.AmGraph();
graph.valueField = "value";
graph.balloonText = "[[category]]: [[value]]";
graph.type = "line";
graph.bullet = "round";
chart.addGraph(graph);

var categoryAxis = chart.categoryAxis;
categoryAxis.autoGridCount = false;
categoryAxis.parseDates = true;
categoryAxis.gridCount = chartData.length;
categoryAxis.gridPosition = "start";

var chartScrollbar = new AmCharts.ChartScrollbar();
chart.addChartScrollbar(chartScrollbar);

//chart.chartCursor = new AmCharts.ChartCursor(); //alternative solution for balloons

chart.write("graphMonitor");

function getData() {
  var data = [];
  var firstDate = new Date();
  var newDate;
  firstDate.setDate(firstDate.getDate() - 10);
  for (var i = 0; i < 10; ++i) {
    newDate = new Date(firstDate);
    newDate.setDate(i);
    data.push({
      "date": newDate, 
      "value": Math.floor(Math.random() * 20 + 10)
    });
  }
  return data;
}


6
задан Nakilon 27 September 2010 в 06:14
поделиться

5 ответов

>> text = "I love spaces"
=> "I love spaces"
>> text.gsub(/\s/, "-").gsub(/[^\W-]/, '').downcase
=> "--"

Пропавшие без вести//

Хотя это имеет немного больше смысла :-)

>> text.gsub(/\s/, "-").gsub(/([^\W-])/, '\1').downcase
=> "i-love-spaces"

И это, вероятно, что предназначено

>> text.gsub(/\s/, "-").gsub(/[^\w-]/, '').downcase
=> "i-love-spaces"

\W означает "не, слово" \w означает "слово"

//генерируют объект RegExp

/ [^\\W-]/.class => Regexp

9
ответ дан 8 December 2019 в 13:51
поделиться

Шаг 1: Добавьте это к своим закладкам. Каждый раз, когда я должен искать regexes, это - моя первая остановка

Шаг 2: Давайте идти через Ваш код

text.gsub(/\s/, "-")

Вы звоните gsub функция и предоставление его 2 параметра.
Первый параметр /\s/, который является рубиновым для, "создают новый regexp, содержащий \s (//похожи особенный "" для regexes).
Второй параметр является строкой "-".

Это поэтому заменит все пробельные символы дефисами.Пока все хорошо.

.gsub([^\W-], '').downcase

Затем Вы называете gsub снова, передавая его 2 параметра. Первый параметр [^\W-]. Поскольку мы не заключили его в кавычки в наклонных чертах вправо, рубин буквально попробует выполненный тот код. [] создает массив, затем он пытается поместить ^\W- в массив, который не является действительным кодом, таким образом, он повреждается.
Изменение его к /[^\W-]/ дает нам допустимый regex.

Смотря на regex, [] говорит, 'соответствуют любому символу в этой группе. Группа содержит \W (что означает несловесный символ), и -, таким образом, regex должен соответствовать любому несловесному символу или любому дефису.

Поскольку второй вещью, которую Вы передаете gsub, является пустая строка, это должно закончить тем, что заменило все несловесные символы и дефисы с пустой строкой (таким образом, разделяющий их)

.downcase

Который просто преобразовывает строку в нижний регистр.

Надежда это помогает :-)

3
ответ дан 8 December 2019 в 13:51
поделиться

Вы забыли наклонные черты. Это должно быть /[^\W-]/

2
ответ дан 8 December 2019 в 13:51
поделиться

Ну, .gsub (/[^\\W-] /'', поскольку) говорит, заменяют что-либо, что это - не слово, ни - ни для чего.

Вы, вероятно, хотите

>> text.gsub(/\s/, "-").gsub(/[^\w-]/, '').downcase
=> "i-love-spaces"

Нижний регистр \w (\W совсем противоположное),

2
ответ дан 8 December 2019 в 13:51
поделиться

Наклонные черты должны сказать, что вещью между ними является регулярное выражение, во многом как кавычки говорят, что вещью между ними является строка.

1
ответ дан 8 December 2019 в 13:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: