/ / как да се намери № на съвпадения, ако използвам модели и съвпадение в Java? - Java

как да намеря броя на мачове, ако използвам модели и съвпадение в Java? - java

имам следния код

    Pattern keyPattern = Pattern.compile(key);
Matcher matcher = keyPattern.matcher(str);
return matcher.replaceAll(value);

това ще замени ключа в str със стойност; но аз искам да знам колко екземпляра на ключ е заменен с стойност. така как да знаете това?

Отговори:

2 за отговор № 1

Можете да използвате метода find в цикъл, за да преброите. Има пример в Java настойнически:

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class MatcherDemo {

private static final String REGEX = "\bdog\b";
private static final String INPUT = "dog dog dog doggie dogg";

public static void main(String[] args) {
Pattern p = Pattern.compile(REGEX);
Matcher m = p.matcher(INPUT); // get a matcher object
int count = 0;
while(m.find()) {
count++;
System.out.println("Match number "+count);
System.out.println("start(): "+m.start());
System.out.println("end(): "+m.end());
}
}
}

Докато извиквате find, можете в същото време да съберете частите на низа и ръчно да създадете резултата в a StringBuffer, Или ако производителността не е проблем, първо можете да преброите и след това отново да сканирате низ със заместител.


1 за отговор № 2

вместо това можете да направите:

int num = 0;
Pattern keyPattern = Pattern.compile(key);
Matcher matcher = keyPattern.matcher(str);
while(matcher.find()){
str = matcher.replaceFirst();
matcher = keyPattern.matcher(str); //don"t know if this line is necessary
num++;
}