Java在字符串中查找单词
我需要在HTML源代码中找到一个单词。我还需要计算发生的次数。我正在尝试使用正则表达式。但上面说找到了0个匹配项 我使用正则表达式,因为我认为这是最好的方法。如果有更好的办法,请告诉我 我需要在HTML源代码中查找单词“hsw.ads”的出现 我已采取以下步骤Java在字符串中查找单词,java,regex,Java,Regex,我需要在HTML源代码中找到一个单词。我还需要计算发生的次数。我正在尝试使用正则表达式。但上面说找到了0个匹配项 我使用正则表达式,因为我认为这是最好的方法。如果有更好的办法,请告诉我 我需要在HTML源代码中查找单词“hsw.ads”的出现 我已采取以下步骤 int count = 0; { Pattern p = Pattern.compile(".*(hsw.ads).*"); Matcher m = p.matcher(SourceCode); while(m.f
int count = 0;
{
Pattern p = Pattern.compile(".*(hsw.ads).*");
Matcher m = p.matcher(SourceCode);
while(m.find())count++;
}
但计数为0
请告诉我你的解决方案
多谢各位。
求助者您没有匹配任何“表达式”,因此可能简单的字符串搜索会更好。hasStringUtils.countMatches(源代码,“yourword”)
如果不想包含commons lang,可以手动编写。只需多次使用
source.indexOf(“yourword”,x)
,每次都提供一个更大的x
(即偏移量),直到它得到-1为止。要在Java中查找字符串,您可以使用字符串方法indexOf
,它告诉您搜索的字符串的第一个字符的索引。要找到所有这些数据并计算它们,您可以这样做(可能有一种更快的方法,但这应该有效)。我建议使用StringUtils CountMatches方法
String temp = string; //Copy to save the string
int count = 0;
String a = "hsw.ads";
int i = 0;
while(temp.indexOf(a, i) != -1) {
count++;
i = temp.indexof(a, i) + a.length() + 1;
}
StringUtils.countMatches(源代码,“hsw.ads”)应该可以工作,但是按照上面的方法(这是有效的),我推荐几件事:
1.正如John Haager所提到的,删除开始/结束。*会有所帮助,因为您正在寻找确切的子字符串
2.您希望转义“.”,因为您正在搜索文字“.”,而不是通配符
3.我会使这个模式成为一个常量,并重复使用它,而不是每次都重新创建它
尽管如此,我仍然建议使用上述方法,但我想我应该指出,您当前的方法在概念上并没有缺陷;只是缺少一些实现细节。您应该试试这个
private int getWordCount(String word,String source){
int count = 0;
{
Pattern p = Pattern.compile(word);
Matcher m = p.matcher(source);
while(m.find()) count++;
}
return count;
}
在字符串中传递要搜索的单词(而不是模式)。您的代码和正则表达式有效。您不需要在正则表达式的开头和结尾包含。*。例如:
String t = "hsw.ads hsw.ads hsw.ads";
int count = 0;
Matcher m = Pattern.compile("hsw\\.ads").matcher(t);
while (m.find()){ count++; }
在本例中,计数为3。还有一件事,如果你要使用正则表达式,如果你真的想在hsw和ads之间寻找一个“.”周期,你需要避开它。从模式的开头和结尾删除通配符,然后再试一次。最好使用
indexOf(a,i)
其中,i
每次都会增加temp=string
。为什么不直接引用string
?@Steve Kuo最初我是在索引上使用子字符串,我不想把字符串搞乱。但既然我改了,没有理由不改。嗨,波佐。谢谢你的回复。我可以知道使用StringUtils要导入的包吗?我添加了一个到commons-lang的链接。您必须将jar添加到您的类路径中。然后FQN是org.apache.commons.lang3.StringUtilsOk。。谢谢我已经在我的包和其他包中包含了commons lang。这就是为什么EclipseIDE为该类建议了不止一种操作,所以我问了你们。谢谢你们@Mayur这就是我想要的。