如何检查字符串的一部分是否等于另一个未知长度的字符串?

时间:2014-12-02 03:03:44

标签: java string

        for(int j = 1;j<fileArray.size();j++) {
            if(str.contains(fileArray.get(end+j))) {

            }
        }

(假设结束是某个数字,如30)。 这部分的目标是当窗口长度为30且fileArray大小> gt时。 30,检查索引30后是否有任何东西与窗口内的内容相匹配。   前:&#34;我喜欢吃馅饼aaaabbbbpiesssbbbb&#34;           从字符串的开头开始,将前17个字符添加到名为window的arraylist中。然后我检查从窗口后面开始的其余字符串,看看是否有匹配的东西。空间不匹配,因此您将其添加到输出。继续检查然后你会看到&#34; piesss&#34;火柴。然后我更换第二个&#34; piesss&#34;随着第一个&#34; piesss&#34;发生。

所以现在我正在使用fileArray.get(end + j)来检查我的字符串(str)中是否有匹配的东西,除了这并不是真的有效。有没有办法可以修复这段代码?

1 个答案:

答案 0 :(得分:0)

您问题的替换部分仍不清楚。正如使用ArrayList的任何理由一样。我已经写了一些代码,在分割你提供的字符串后,会在5个字符的窗口中搜索匹配。请注意,您给出的30和17值没有任何匹配(请参阅注释掉的代码)。但是,通过调整值,可以找到一些匹配。

public static void main(String[] args) {
                 //          1         2         3   
                 //012345678901234567890123456789012345678   <- shows the index 
    String test = "i like to eat piesss aaaabbbbpiesssbbbb";
//    int first = 17;
//    int end = 30;

    int first = 20;
    int end = 37;

    String firstHalf = test.substring(0, first);
    String secondHalf = test.substring(first, end);

    int matchSize = 5;

    for (int i = 0; i + matchSize < secondHalf.length() ; i++)
    {
        String window = secondHalf.substring(i, i + matchSize);
        if ( firstHalf.contains(window) )
        {
            System.out.println(window);
        }
    }
    System.out.println("Done searching.");
}

显示器:

piess
iesss
Done searching.

如果这不符合您的意思,请编辑您的问题以明确您的需求。