2010-06-17 3 views
6

У меня есть строка, которая имеет значения, разделенные запятой. Как подсчитать количество элементов в строке, разделенных запятой. например, следующая строка содержит 4 элементаподсчет элементов в строке

string = "1,2,3,4";

+0

Очень похоже на http://stackoverflow.com/questions/881085/count-the-number-of-occurances-of-a-character-in-a-string-in-javascript, хотя и не является точным дублировать. –

ответ

1

Первый раскол, а затем подсчет элементов в массиве. Как это:

"1,2,3,4".split(/,/).length; 
+0

Это не так, это просто другое определение. Пустая строка также является значением;) Например, попробуйте «,,». – Wolph

+0

Да, но вы бы сказали, что в большинстве случаев использование одной пустой строки будет считаться списком из 1 значения? так что количество пунктов в «а» равно количеству элементов в «»? – SuitedSloth

+0

Я бы не сказал больше всего, но определенно достаточно часто. Если нет значения, вы, вероятно, вообще не хотите запускать функцию – Wolph

4
var mystring = "1,2,3,4"; 
var elements = mystring.split(','); 
return elements.length; 
0

Все ответы, предполагающие нечто эквивалентное myString.split(',').length может привести к неправильным результатам, потому что:

"".split(',').length == 1 

пустая строка не то, что вы можете рассмотреть список 1 шт.

Более интуитивный, но все еще сжато реализация будет:

myString.split(',').filter((i) => i.length).length 

Это не считает строки 0-символов как элементов в списке.

"".split(',').filter((i) => i.length).length 
0 

"1".split(',').filter((i) => i.length).length 
1 

"1,2,3".split(',').filter((i) => i.length).length 
3 

",,,,,".split(',').filter((i) => i.length).length 
0 
+0

Обратите внимание, что поддержка браузера функций стрелок по-прежнему ограничена: http://caniuse.com/#feat=arrow-functions. Пока что я рекомендую вместо этого используется регулярная функция. – Wolph

+0

Вы правы @Wolph. Похоже, что IE11 по-прежнему имеет 12% рынка сегодня на глобальном уровне. – SuitedSloth

Смежные вопросы