使用java中的indexOf和substring在字符串中查找子字符串的出现

时间:2016-12-04 23:02:41

标签: java

任何人都可以帮助我为什么这段代码总是评估为真?

public boolean prefixAgain(String str, int n) {
  String prefix = str.substring(0,n-1);
  int index = str.indexOf(prefix,n-1);
   if (index != -1) 
   {return true;}
   else
   {return false;}
}

3 个答案:

答案 0 :(得分:0)

我认为这对你更有效:

int index = str.indexOf(prefix,0);

您试图在您查找的位置(n-1)的末尾找到前缀的索引。你想要达到什么目的?

答案 1 :(得分:0)

package com;
public class Mycode {
    public static void main(String[] args) {
        System.out.println(prefixAgain("nishikantnishikant", 11));//false - if you have repeated string it will return false till index is greater than length of the string
        System.out.println(prefixAgain("nishikant", 3));//false -if there is no repeat, you can get false

        System.out.println(prefixAgain("nishikant", 2));//true 
        System.out.println(prefixAgain("nishikantnishikant", 10));//true - if you have repeated string it will return true till index is equal to length of the string
    }
    public static  boolean prefixAgain(String str, int n) {
          String prefix = str.substring(0,n-1);
          int index = str.indexOf(prefix,n-1);
           if (index != -1) 
           {return true;}
           else
           {return false;}
    }
}

答案 2 :(得分:0)

我终于意识到我必须在代码中使用n-n n-1。 这是因为substring方法对start和end索引有两种不同的约定。

str.substring(0,n)包括起始索引(0)但不包括结束索引(n)。这直观有意义,因为子串的长度与n匹配。