鉴于以下内容:
String s = "The The The the the the";
如何在字符串s中找到“The”的实例数?
s.matches("The")
只告诉我它是否至少有一个。
s.contains("The")
是一样的。
有一些简单的方法吗?
答案 0 :(得分:4)
我知道Matcher.find()方法试图找到与模式匹配的输入序列的下一个子序列。这意味着您可以多次遍历调用此方法的匹配项:
int count = 0;
while (matcher.find()) {
count++;
}
你应该使用Matcher.start()和Matcher.end()来检索匹配的子序列。
答案 1 :(得分:2)
您可以使用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();
}
答案 2 :(得分:0)
你可以使用 s.indexOf(“The”,index); ,如果它返回一些索引然后增加 count 和 index 也可以使其循环,直到找不到索引。
注意:最初索引的值为0
答案 3 :(得分:0)
尝试一下:
String test = "The The The the the the";
System.out.println(test.split("The").length);
答案 4 :(得分:0)
只需将字符串拆分为要计算的字词。
String text = "the the water the the";
System.out.println(text.split("the", -1).length -1);
此外,如果您当前正在使用apache commons lang,您可以使用StringUtils中的count函数
String text = "the the water the the";
int count = StringUtils.countMatches(text, "the");
System.out.println("count is " + count);
然而,不要仅仅为那个有点过分的功能带来它:)
答案 5 :(得分:-1)
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));
}