往期目录
目录
一、截取
1.方法简述
1.1 相关概念
- String.indexOf( )方法:可返回某个指定字符值在字符串中首次出现的位置(索引)。
String.lastIndexOf( )方法:用于获取指定字符在字符串中最后一次出现的位置(索引)。 如果字符串中不存在子字符串,则返回-1 。
String.substriing( )方法:用于截取字符串中特定部分。
StringUtils.substringBetween( )方法:取得两字符串之间的字符串;
StringUtils.substringAfter( )方法:取得首次出现指定字符串后的字符串;
StringUtils.substringBefore( )方法:取得首次出现指定字符串之前的字符串;
StringUtils.substringBeforeLast( )方法:取得最后一次出现指定字符串之前的字符串;
StringUtils.substringAfterLast( )方法:取得最后一次出现指定字符串之后的字符串.
1.2 用法
1.2.1 substring() 方法(常用)
- substring(int beginIndex):返回从起始位置(索引)到字符串的末尾;
- substring(int beginIndex,int endIndex):返回从起始位置(索引)到结束位置(索引)之间的字符串(不包含结束位置)(忽略造会成越界异常)。
1.2.2 StringUtils 相关方法
-
StringUtils.substringAfter(String testString, String separator):返回testString字符串里separator字符串之后的内容;(其他方法结构同理)
- StringUtils.substringBetween(String testString, String fromString, String toString ) :返回testString字符串里fromString字符串到toString字符串之间的内容。
2.依赖
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.11</version>
</dependency>
3.综合应用
3.1 截取指定长度或内容的字符串
String sub="hello,world!";
//截取world
String a = sub.substring(6, 11);
System.out.println(a);//输出:world
//截取前5位
String b = sub.substring(0, 5);
System.out.println(b);//输出:hello
//截取最后6位
String c = sub.substring(sub.length()-6);
System.out.println(c);//输出:world!
注:
- 截取字符串是从左向右进行截取的,如果开始下标大于结束下标就截取不到内容了
- 如果结束下标大于字符串长度,会造成越界异常
3.2 截取指定字符(串)之前的内容
String str = "12/3.html/ab.html/3";
//截取指定符号 "/" 首次出现 之前的内容
String c = str.substring(0, str.indexOf("/"));
System.out.println(c);//输出:12
//截取指定符号 "/" 最后一次出现 之前的内容
String d = str.substring(0, str.lastIndexOf("/"));
System.out.println(d);//输出:12/3.html/ab.html
//截取指定字符串 ".html" 首次出现 之前的内容
String e = StringUtils.substringBefore(str, ".html");
System.out.println(e);//输出:12/3
//截取指定字符串 ".html" 最后一次出现 之前的内容
String f = StringUtils.substringBeforeLast(str, ".html");
System.out.println(f);//输出:12/3.html/ab
3.3 截取指定字符(串)之后的内容
String str = "12/3.html/ab.html/3";
//截取指定符号 "/" 首次出现 之后的内容
String a = str.substring(str.indexOf("/")+1);
System.out.println(a);//输出:3.html/ab.html/3
//截取指定符号 "/" 最后一次出现 之后的内容
String b = str.substring(str.lastIndexOf("/") + 1);
System.out.println(b);//输出:3
//截取指定字符串 ".html/" 首次出现 之后的内容
String c = StringUtils.substringAfter(str, ".html/");
System.out.println(c);//输出:ab.html/3
//截取指定字符串 ".html/" 最后一次出现 之后的内容
String d = StringUtils.substringAfterLast(str, ".html/");
System.out.println(d);//输出:3
3.4 截取两个指定字符(串)之间的内容
String str = "12/3.html/ab.html";
//截取指定符号"/"首次出现和最后一次出现之间的内容
String a = str.substring(str.indexOf("/") + 1, str.lastIndexOf("/"));
System.out.println(a);//输出:3-html
//截取两个指定符号"/"(最后一次出现)和"b"(首次出现)之间的内容
String b = str.substring(str.lastIndexOf("/") + 1, str.indexOf("b"));
System.out.println(b);//输出:a
//截取两个指定符号串(首次出现)"/"和".html"之间的内容
String c= StringUtils.substringBetween(str, "/", ".html");
System.out.println(c);//输出:3
注:
- 使用StringUtils.substringBetween()截取字符串时,如果指定的字符串有多个,都会按首次出现的字符串来实现截取。
二、分隔
1.方法简述
regex:正则表达式分隔符。
limit:分割的份数。
- String.split(String regex,int limit)方法:以指定分隔符分隔,返回一个数组。
2.应用
String str = "12/3.html/ab.html";
//以"/"分隔
String[] split = str.split("/");
System.out.println(Arrays.asList(split));//输出:[12, 3.html, ab.html]
//以"/"分隔,分隔成2份
String[] split1 = str.split("/", 2);
System.out.println(Arrays.asList(split1));//输出:[12, 3.html/ab.html]
//以"/"分隔,分隔成3份,并获取第二个元素
String s = str.split("/", 3)[1];
System.out.println(s);//输出:3.html
//以"/"分隔,并遍历
for (String s1 : str.split("/")) {
System.out.println(s1);
}