【发布时间】:2014-03-31 07:35:49
【问题描述】:
我想计算源字符串中特定单词的出现次数。 假设 src="thisisamangoterrthisismangorightthis?" 字=“这个” 所以我要做的是,首先在 src 中搜索单词的索引。它在索引 0 处。现在我正在从这个索引位置提取部分到 src 的末尾。 即,现在 src="isamangoterrthisismangorightthis?"并再次搜索单词。 但是我得到了数组超出范围的异常。
public static int countOccur(String s1, String s2)
{
int ans=0;
int len1=s1.length();
int len2=s2.length();
System.out.println("Lengths:"+len1+" " +len2);
while(s1.contains(s2))
{
ans++;
int tmpInd=s1.indexOf(s2);
System.out.println("Now Index is:"+tmpInd);
if((tmpInd+len2)<len1){
s1=s1.substring(tmpInd+len2, len1);
System.out.println("Now s1 is:"+s1);
}
else
break;
}
return ans;
}
【问题讨论】:
-
您永远不会重新计算 len1,因此它会保留第一个字符串的长度,即使 s1 变小,这也解释了您的异常。只需使用从给定索引到字符串末尾的 substring(int)。
标签: java string pattern-matching