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))
}
}