JAVA中如何判断一个字符串是否为另一个字符串的子串

Python019

JAVA中如何判断一个字符串是否为另一个字符串的子串,第1张

indexOf(String s)的使用,如果包含,返回的值是包含该子字符串在父类字符串中起始位置;如果不包含必定全部返回值为-1。

代码如下:

package my_automation

public class z_test {

  public static void main(String[] args) {

      String test = "This is test for string"

      System.out.println(test.indexOf("This"))//0

      System.out.println(test.indexOf("is"))//2

      System.out.println(test.indexOf("test"))//8

      System.out.println(test.indexOf("for"))//13

      System.out.println(test.indexOf("for string       "))//-1

      if (test.indexOf("This")!=-1){

          //"只要test.indexOf('This')返回的值不是-1说明test字符串中包含字符串'This',相反如果包含返回的值必定是-1"

          System.out.println("存在包含关系,因为返回的值不等于-1")   

      }else{ 

          System.out.println("不存在包含关系,因为返回的值等于-1")

      }

      if (test.indexOf("this")!=-1){

          //"只要test.indexOf('this')返回的值不是-1说明test字符串中包含字符串'this',相反如果包含返回的值必定是-1"

          System.out.println("存在包含关系,因为返回的值不等于-1") 

      }else{

          System.out.println("不存在包含关系,因为返回的值等于-1")

      }

}

扩展资料

java string中indexOf()常用用法

Java中字符串中子串的查找共有四种方法,如下:

1、int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引。

2、int indexOf(String str, int startIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引。

3、int lastIndexOf(String str) :返回在此字符串中最右边出现的指定子字符串的索引。

4、int lastIndexOf(String str, int startIndex) :从指定的索引处开始向后搜索,返回在此字符串中最后一次出现的指定子字符串的索引。

public class Test {

  public static void main(String[] args) {

      String s = "xXccxxxXX"

      // 从头开始查找是否存在指定的字符         //结果如下

      System.out.println(s.indexOf("c"))     //2

      // 从第四个字符位置开始往后继续查找,包含当前位置

      System.out.println(s.indexOf("c", 3))  //3

      //若指定字符串中没有该字符则系统返回-1

      System.out.println(s.indexOf("y"))     //-1

      System.out.println(s.lastIndexOf("x"))//6

System.out.println(s.indexOf(120,2))  //4 

    System.out.println(s.indexOf('x',2))  //4           120是x的ASCII编码

  }

}

二楼改的

c = b.substring(i,j-1)

之后下标越界没了。

程序无法出结果,中间有死循环。当while语句执行完之后j是a.length()然后是执行内循环for语句for(j=b.length()-1j>0j--) 此时只比较J>0。。。。好像是个死循环。最内层的循环可以在加一个int k来控制。多次运行导致cpu上升至100%的。

提供一种矩阵算法,这是LCS的一种算法:

public class stringCompare {

/**求最长匹配子字符串算法

str数组记录每行生成的最大值strmax

max数组记录str数组最大时所处的列号nummaxj

最大子字符串为substring(nummax-strmax+1,strmax+1)

*/

public static void main(String[] args) {

String s1="asdfgxxcvasdfgc"

String s2="asdfxxcv"

int m=s1.length()

int n=s2.length()

int k=0

int nummax=0

int []str=new int[m]

int []max=new int[m]

int []num=new int[m]

for(int i=0i<mi++) //生成矩阵数组

for(int j=n-1j>=0j--)

{

if(s1.charAt(i)==s2.charAt(j))

if(i==0||j==0)

{

num[j]=1

max[i]=j

str[i]=1

}

else

{

num[j]=num[j-1]+1

if(max[i]<num[j])

{

max[i]=j

str[i]=num[j]

}

}

else

num[j]=0

}

for(k=0k<mk++) //求str数组的最大值

{

if(nummax<str[k])

{

nummax=str[k]

}

}

for(k=0k<mk++)

if(nummax==str[k])

System.out.println(s2.substring(max[k]-str[k]+1,max[k]+1))

}

}