我正在尝试使用嵌套的for循环编写代码,该循环将返回一个子字符串的实例出现在一个更大的字符串中。
即。如果字符串是“ selfish旗鱼津津有味的贝类”并且我正在寻找“ sh ”的出现,那么预期的结果是5。
public class Test
{
public static void main(String[] args)
{
String sub = "sh";
String str = "selffish sailfish relish shellfish";
int count = 0;
str = str.toLowerCase();
sub = sub.toLowerCase();
for (int i = 0; i < str.length(); i++)
{
if (str.charAt(i) == sub)
{
count++;
}
}
System.out.println(count);
}
}
这是我到目前为止所拥有的。逻辑上它不会工作,因为它将字符串与char进行比较。是否有另一种比较我可以用来代替char(i)让它起作用?
答案 0 :(得分:1)
您可以使用.indexOf()
:
public static int nrTimes(final String needle, final String haystack)
{
if (needle.isEmpty())
throw new IllegalArgumentException();
if (haystack.isEmpty())
return 0;
final int len = needle.length();
int ret = 0;
int index = 0;
while ((index = haystack.indexOf(needle, index)) != -1) {
ret++;
index += len;
}
return ret;
}