如何在java中的较大字符串中找到字符串s的匹配#

时间:2012-03-26 06:57:54

标签: java regex string

鉴于以下内容:

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

如何在字符串s中找到“The”的实例数?

s.matches("The")只告诉我它是否至少有一个。 s.contains("The")是一样的。

有一些简单的方法吗?

6 个答案:

答案 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));
}