How do I count the number of occurrences of a char in a String?
Как мне подсчитать количество вхождений символа char в строку?
У меня есть строка
a.b.c.d
Я хочу подсчитать вхождения '.' идиоматическим способом, предпочтительно однострочным.
(Ранее я выражал это ограничение как "без цикла", на случай, если вам интересно, почему все пытаются ответить без использования цикла).
Переведено автоматически
Ответ 1
Как насчет этого. Он не использует регулярное выражение внизу, поэтому должен быть быстрее, чем некоторые другие решения, и не будет использовать цикл.
Из комментария: Будьте осторожны с StringTokenizer, для a.b.c.d это сработает, но для a .b.c...d или ...a.b.c.d или a....b.....c....d ... или etc. это не сработает. Это просто будет учитываться . между символами только один раз
Рано или поздно, что-то должно зацикливаться. Вам гораздо проще написать (очень простой) цикл, чем использовать что-то вроде split, которое намного мощнее, чем вам нужно.
Обязательно инкапсулируйте цикл в отдельный метод, например
publicstaticintcountOccurrences(String haystack, char needle) { intcount=0; for (int i=0; i < haystack.length(); i++) { if (haystack.charAt(i) == needle) { count++; } } return count; }
Тогда вам не нужно иметь цикл в вашем основном коде - но цикл должен быть где-то там.