初次写博客还望各位大佬多多包含,本人是刚接触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 "";
}

这样子就解决了异常,就是因为这个问题困扰了枭燚一个下午,不知道啥子问题(没看异常内容),然后突然来的灵感。

好了,这是本人第一篇博客如果内容有误请联系我,也请进行纠正等内容,部分内容截取自其他博客(忘记网址了),侵权也请联系我,谢谢支持。