初次写博客还望各位大佬多多包含,本人是刚接触Java不久的大白一枚(只是一个兴趣者),分享一些遇到的问题解决方法和经验。
(其中的不足及错误还望各位多多指教。)
Java(Android)截取字符串间的内容
大家有时可能遇到这样子的问题,比如需要截取"<p>你好</p>"直接的内容,但是安卓提供的java.lang.String.substring()方法并不能满足各种需求,需要大家自己封装一个,那么问题就来了,首先,看看substring()的使用。
方法如下:
public String substring(int beginIndex, int endIndex)
第一个int为开始的索引,对应String数字中的开始位置,
第二个是截止的索引位置,对应String中的结束位置
1、取得的字符串长度为:endIndex - beginIndex;
2、从beginIndex开始取,到endIndex结束,从0开始数,其中不包括endIndex位置的字符
还有介绍之外的一种方法:
public String substring(int beginIndex)
该参数为开始的索引,对应String数字中的开始位置并且它是从beginIndex开始取,一直到末尾,也就是说是方法一的String.substring(beginIndex,String.lenth())
那么我们由此也可以写出一些截取方法了:
1.从某一位置截取到末尾
String afterString(String str,String start){
if(str.contains(start)){
return str.substring(str.indexOf(start)+start.length());
}
return "";
}
2.从开始截取到某一位置
String beforeString(String str,String end){
if(str.contains(end)){
return str.substring(0,str.indexOf(end));
}
return "";
}
3.截取字符串之间
String betweenString(String str,String start,String end){
if(str.contains(start) && str.contains(end)){
return str.substring(str.indexOf(start)+start.length(),str.indexOf(end));
}
return "";
}
但是,这最后一个有个问题,如果这样子用betweenString("1231456789","23","1");你可以发现会抛出异常:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -3
at java.lang.String.substring(String.java:1967)
at test.Main.betweenString(Main.java:28)
at test.Main.main(Main.java:8)
显示,超出字符串范围了,一看原来indexOf获取的第一个"1"的位置,但是我们需要"23"后面的第一个"1"的位置,所以说我们需要改下:
String betweenString(String str,String start,String end){
if(str.contains(start) && str.contains(end)){
str = str.substring(str.indexOf(start)+start.length());
return str.substring(0, str.indexOf(end));
}
return "";
}
这样子就解决了异常,就是因为这个问题困扰了枭燚一个下午,不知道啥子问题(没看异常内容),然后突然来的灵感。