较大字符串中子串的实例

时间:2015-02-17 00:57:23

标签: java

我正在尝试使用嵌套的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)让它起作用?

1 个答案:

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