как найти количество совпадений строки s в большей строке в Java - PullRequest
0 голосов
/ 26 марта 2012

Учитывая следующее:

String s = "The The The the the the";

Как узнать, сколько экземпляров «The» содержится в строке s?

s.matches("The") только говорит мне, если это хотя бы одинесть.s.contains("The") это то же самое.

Есть какой-то простой способ?

Ответы [ 6 ]

4 голосов
/ 26 марта 2012

Как я знаю, метод Matcher.find () пытается найти следующую подпоследовательность входной последовательности, которая соответствует шаблону. Это означает, что вы можете перебирать совпадения, вызывая этот метод несколько раз:

int count = 0;
while (matcher.find()) {
  count++;
}

Вы должны использовать Matcher.start () и Matcher.end () для получения соответствующей подпоследовательности.

2 голосов
/ 26 марта 2012

Вы можете использовать indexOf (str, count)

int count = 0;
String s = "The The The the the the";
String match = "The";
int searchStart = 0;

while ((searchStart = s.indexOf(match, searchStart)) != -1)
{
    count++;
    searchStart+= match.length();
}
0 голосов
/ 26 марта 2012

Просто разбейте строку на слово, которое нужно посчитать.

 String text = "the the water the the";
 System.out.println(text.split("the", -1).length -1);

Также, если вы в настоящее время используете Apache Commons Lang, вы можете использовать функцию подсчета из StringUtils

String text = "the the water the the";
int count = StringUtils.countMatches(text, "the");
System.out.println("count is " + count);

Однако не просто добавьте это для этой единственной функции, которая немного излишня:)

0 голосов
/ 26 марта 2012
String s = "The The The The The sdfadsfdas";

List<String> list = Arrays.asList(s.split(" "));

Set<String> unique = new HashSet<String>(list);
for (String key : unique) {
    System.out.println(key + ": " + Collections.frequency(list, key));
}
0 голосов
/ 26 марта 2012

Дайте попробовать это:

String test = "The The The the the the";
System.out.println(test.split("The").length);
0 голосов
/ 26 марта 2012

Вы можете использовать s.indexOf ("The", index); , если он возвращает какой-то индекс, то приращение count и index также ине включайте его в цикл, пока индекс не будет найден.

ПРИМЕЧАНИЕ. Первоначально значение индекса составляет 0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...