#java
Вопрос:
Я хотел найти количество встречаемости подстроки в строке, которую я реализовал в следующем коде на java:
Pattern mypattern=Pattern.compile("a");
Matcher mymatcher=mypattern.compile("aaaaaa");
int cnt=0;
while(mymatcher.find()){
cnt ;
)
System.out.println(cnt);
Но это не работает, когда я хочу, чтобы функция считала также пересекающиеся строки, например, я хочу, чтобы ответ на поиск aa в aaaaaa был 5, но вышеприведенная программа покажет его 3.Как я могу это сделать?
Комментарии:
1. Возможно, вам следует найти первое вхождение, а затем начать поиск следующего вхождения с 1 символа после. например, если вы сначала найдете строку с индексом 10, начните следующий поиск с 11
2. Пожалуйста, опубликуйте код, который вы на самом деле используете. Этот опубликованный код не соответствует описанию и не компилируется.
3. Почему вы хотите
5
в качестве ответа при проверке, как частоaaaaaa
содержитсяa
? Я насчитал 6 случаев, и это также то, что ваш код даст в качестве ответа (как только я изменюсьmypattern.compile
mypattern.matcher
, чтобы действительно иметь возможность запускать код)4. @OHGODSPIDERS Это то, что я имел в виду, когда код не соответствовал описанию, потому что ОП говорил об «аа», а не о «а», как в коде.
5. @OHGODSPIDERS OP означало «найти
aa
вaaaaaa
возвратах 5″.
Ответ №1:
Положительный внешний (?=(aa))
вид может использоваться в регулярном выражении для обработки перекрывающихся совпадений:
System.out.println(Pattern.compile("(?=(aa))").matcher("aaaaaa").results().count());
// 5
Ответ №2:
Этот код даст вам желаемое количество 5, если вы ищете случаи aa в aaaaaa.
Pattern mypattern = Pattern.compile("aa");
Matcher mymatcher = mypattern.matcher("aaaaaa");
int cnt = 0;
int start = 0;
while (mymatcher.find(start)) {
start = mymatcher.start() 1;
cnt ;
}
System.out.println(cnt);
Ответ №3:
Вы можете использовать библиотеку Apache Commons Lang:
System.out.println(StringUtils.countMatches(str, subStr));
Комментарии:
1. Вы имеете в виду этот язык Apache Commons ?
2. Да, просто импортируйте класс StringUtils: импортируйте org.apache.commons.lang3.StringUtils;