2013-06-26 1 views
0

Я не могу заставить это работать, и он возвращает null. Мне нужен очень простой способ получить количество чисел в строке.Подсчитайте количество кавычек в строке с помощью regex

var wtf = '"""' 
var count = wtf.match(/"/g); 
alert(count); 

У этой проблемы.

var count = tableitems[i].match(/\"/g); 
alert(count); 
+2

Ваш первый пример кода не возвращает 'null', как вы предлагаете. –

+0

ваш код работает. каков твой вопрос ? – DavidLin

+0

Сплит намного быстрее, чем при использовании Regex (по крайней мере, в хроме). Поэтому используйте split(), если это возможно для вашего решения. – Lucky

ответ

3

match не возвращает счет, но сам матч. Вы хотите длину ваших матчей:

var wtf = '"""' 
var matches = wtf.match(/"/g); 
var count = matches ? matches.length : 0; 

Последняя строка означает: «если есть сосчитать их матчи, если не возвращать ноль»

+0

- это действительно строка кода? ---- var count = matches? matches.length: 0; --- – Neil

+0

уверен, это тройной оператор, см. Править – Alp

+1

count = matches && matches.length || 0; также работает, и немного быстрее, как и count = (соответствует || "") .length; – dandavis

2

В вашем первом примере count - это массив совпадений. Чтобы узнать, сколько есть, сделать

alert(count ? count.length : 0) // count is null if there are no matches 

В случае, если Вы думаете о создании переключателя (: P), CoffeeScript имеет хороший способ справиться с этим типом ситуации:

wtf = '"""' 
count = wtf.match(/"/g)?.length; 

Если совпадений нет, счет будет undefined, иначе будет количество совпадений.

+1

Я бы использовал 'alert (count? Count.length: 0)', так как если совпадений нет, он действительно возвращает null. –

+0

@JosephSilber спасибо! Хорошее предложение – Andbdrew

3

Вы могли бы сделать это так:

var n=wtf.split('"').length-1 
+1

Разделение строк намного быстрее, чем использование регулярного выражения, это хорошее решение. – dandavis