常见String进行split的方法有:
1. JDK中String对象自带的split方法,public String[] split(String regex)
2. commons-lang包中StringUtils提供的splitPreserveAllTokens方法, public static String[] splitPreserveAllTokens(String str, String separatorChars)
3.commons-lang包中StringUtils提供的split方法,public static String[] split(String str, String separatorChars)
1. String.split方法
a. 分割的字符串长度为1,且这个字符不是正则表达式的元字符.$|()[{^?*+\中一个时,按普通字符进行分割;
b. 分割的字符串长度为2,且第一个字符为\,第二个字符不是ASCII中的数字或者字母时,按普通字符串进行分割;
c. 非a或b的情形,使用正则表达式进行分割Pattern.compile(regex).split(this, limit);
2. StringUtils的splitPreserveAllTokens方法和split方法都是调用的StringUtils的splitWorker方法。
private static String[] splitWorker(String str, String separatorChars, int max, boolean preserveAllTokens)
区别在于splitPreserveAllTokens调用splitWorker方法时,preserveAllTokens为true,而split方法调用splitWorker方法时,preserveAllTokens为false。
preserveAllTokens:用来控制是否分割相邻的分割符
举例说明如下:
常见String进行split的方法有:1. JDK中String对象自带的split方法,public String[] split(String regex)2. commons-lang包中StringUtils提供的splitPreserveAllTokens方法, public static String[] splitPreserveAllTokens(String str, ...
System.out.println(":ab:cd:ef::".
split
(":").length);//末尾分隔符全部忽略
System.out.println(":ab:cd:ef::".
split
(":",-1).length);//不忽略任何一个分隔符
System.out.println(S...
今天用
String
Utils#
split
,陷入了前两个坑。需求是从数据库
中
查出用TAG分割的sights和citys,二者在位置上是对应的,
然后根据sight和city查对应的景区。使用的时候先验证
split
之后的sights和citys的长度必须一致。
并且city可能为""。
1、
String
Utils#
split
会合并相邻的分割符,这个和
String
.
split
不一致。需要使用sp...
[code="
java
"]
public static void TestStr(){
//null 和 ""操作~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//判断是否Null 或者 ""
//System.out.println(
String
Utils.isEmpty(null));
//System.out.println(
String
Uti...
问题:使用
split
拆分
String
字符串后拿到的数组发现一个问题-如果拆分的字符串根据拆分规则拆分后,后面的位置上如果没有值,则
split
返回的数组会自动忽略它们。
demo:代码第四行返回的数组长度是4,如果是批量处理
String
操作,使用array[4]时就会报错下标越界问题
String
temp = “1,2,3,4,5”;
System.out.println(temp.
split
(",").length); //5
temp = “1,2,3,4,”;
System.out.println(t
/*1. 分割字符串 ,可以设定得到数组的长度,但一般情况下不要设定,这样会发生冲突 */
String
Utils.
split
("y5y,4454,545");//默认是按 ,来分割
String
Utils.
split
("aaaa#sss", "#");
/*结果是:[aaaa, sss]*/
String
Utils.
split
("aaa
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.11</version>...
使用
split
()时应
注意
检查最后一个分隔符后面有无内容,否则最终分割出的数组元素个数有可能与预期得到的个数不相符,导致异常!
String
str = ",1,2,,";
String
[] list1 = str.
split
(",");
String
[] list2 = str.
split
(",",-1);
String
[] list3 =
String
Utils.
split
(str,",
System.out.println(":ab:cd:ef::".
split
(":").length);//末尾分隔符全部忽略
System.out.println(":ab:cd:ef::".
split
(":",-1).length);//不忽略任何一个分隔符
System.out.println(
String
Utils.
split
(":ab:cd:ef::",":").length
Java
中
的
split
方法是用来将字符串分割成子字符串的方法。该方法接收一个正则表达式作为参数,并返回一个字符串数组,该数组包含所有与正则表达式匹配的子字符串。例如:
String
str = "hello,world";
String
[] arr = str.
split
(",");
上面的代码将字符串 "hello,world" 以 "," 为分隔符分割成了两个字符串 "hello" 和 "world",并存储在字符串数组 arr
中
。
String s = "a-b+c-d-";
String[] splits = s.split("\\+");
String[] splits2 = s.split("\\-");
String[] splits3 = StringUtils.splitPreserveAllTokens(s, "\\-");
[/code]
Java中String进行split的注意事项
王大厨不做饭:
spark-shell启动命令详细解析1
ctotalk: