1.通过indexOf()方法来对查找子串
- indexOf()语法:
public int indexOf(int ch ) :返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
或
public int indexOf(int ch, int fromIndex) :返回从 fromIndex 位置开始查找指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
或
int indexOf(String str) :返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
或
int indexOf(String str, int fromIndex):返回从 fromIndex 位置开始查找指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。 - 示例:
//查找子串
String str1="abdc686512ffsc1267d";
//查找指定字符第一次出现的位置
int result1=str1.indexOf(99); //参数99为字符c的ascii码
//查找指定字符串第一次出现的位置
int result2=str1.indexOf("12");
//查找指定字符第一次出现的位置,从索引处开始(包括索引处)
int result3=str1.indexOf(97, 0); //参数97为字符a的ascii码
//查找指定字符串第一次出现的位置,从索引处开始(包括索引处) 未找到返回-1
int result4=str1.indexOf("abc",0);
System.out.println("result1:"+result1);
System.out.println("result1:"+result2);
System.out.println("result1:"+result3);
System.out.println("result1=:"+result4);
System.out.println("*****************************");
结果:
result1:3
result1:8
result1:0
result1=:-1
*****************************
2.通过subString()方法截取字符串
- subString()语法:
public String substring(int beginIndex)
或
public String substring(int beginIndex, int endIndex)
1、取得的字符串长度为:endIndex - beginIndex;
2、从beginIndex开始取,到endIndex结束,从0开始数,其中不包括endIndex位置的字符 - 示例:
//截取字符串
String str1="abdc686512ffsc1267d";
String substr1=str1.substring(4);
//指定区间(不包括结束索引处)
String substr2=str1.substring(4, 10);
System.out.println("substr1="+substr1);
System.out.println("substr2="+substr2);
System.out.println("*****************************");
//结合使用indexOf()灵活截取示例
String str2="<![CDATA[3-4级]]>";
String cutstr=str2.substring(9, str2.indexOf("]]"));
System.out.println("cutstr="+cutstr);
结果:
substr1=686512ffsc1267d
substr2=686512
*****************************
cutstr=3-4级
3.通过split()分割字符串
- split()语法:
split() 方法根据匹配给定的正则表达式来拆分字符串。
public String[] split(String regex, int limit)
其中参数:regex – 正则表达式分隔符。limit – 分割的份数。
注意: . 、 | 和 * 等转义字符,必须得加 \。
注意: 多个分隔符,可以用 | 作为连字符。 - 示例:
//以c为分割字符
String[] splitstr=str1.split("c");
for(String res : splitstr){
System.out.println(res);
}
System.out.println("*****************************");
String str = "Welcome-to-ChongQing";
System.out.println("- 分隔符返回值 :" );
for (String retval: str.split("-")){
System.out.println(retval);
}
System.out.println("- 分隔符设置分割份数(2份)返回值 :" );
for (String retval: str.split("-", 2)){
System.out.println(retval);
}
System.out.println("");
String str2 = new String("www.blog.youkuaiyun.com");
System.out.println("转义字符返回值 :" );
for (String retval: str2.split("\\.", 3)){
System.out.println(retval);
}
System.out.println("");
String str3 = new String("acount=? and uu =? or n=?");
System.out.println("多个(3个)分隔符返回值 :" );
for (String retval: str3.split("and|or")){
System.out.println(retval);
}
结果:
abd
686512ffs
1267d
*****************************
- 分隔符返回值 :
Welcome
to
ChongQing
- 分隔符设置分割份数(2份)返回值 :
Welcome
to-ChongQing
转义字符返回值 :
www
blog
youkuaiyun.com
多个(3个)分隔符返回值 :
acount=?
uu =?
n=?
注:此博客是博主做调用气象网的对外接口获取天气预报时,回忆复习字符串常用操作和正则表达式时写下的。其中部分示例摘自菜鸟教程:菜鸟教程。
关于更多正则表达式使用例子参考:最全的常用正则表达式大全