赞
踩
split()方法是String类的一个方法,用于根据给定的正则表达式将字符串分割成子字符串数组。这个方法非常有用,特别是在需要解析和处理来自文件、用户输入或其他源的文本数据时。
public String[] split(String regex)
根据匹配给定正则表达式的部分将字符串分割为子字符串数组。
public String[] split(String regex, int limit)
根据正则表达式分割字符串,但结果数组的长度不会超过limit
。如果limit
被设置为负数,则表示没有限制。
regex
参数是正则达式,一般情况下,分割字符串参考字符串就行,不用考虑正则表达式。
例如,
- public class Main {
- public static void main(String[] args) {
- String str= "boo:and:foo";
- //输出[boo, and:foo]
- System.out.println(java.util.Arrays.toString(str.split(":",2)));
- //输出[boo, and, foo]
- System.out.println(java.util.Arrays.toString(str.split(":",5)));
- //输出[boo, and, foo]
- System.out.println(java.util.Arrays.toString(str.split(":",-2)));
- //输出[b, , :and:f, , ]
- System.out.println(java.util.Arrays.toString(str.split("o",5)));
- //输出[b, , :and:f, , ]
- System.out.println(java.util.Arrays.toString(str.split("o",-2)));
- //输出[b, , :and:f]
- System.out.println(java.util.Arrays.toString(str.split("o",0)));
- }
- }
split()
方法是String
类的一个方法,用于根据给定的正则表达式将字符串分割成子字符串数组。虽然这个方法很直接,但在使用特殊字符作为分隔符时,可能会遇到一些不直观的情况。这是因为split()
方法的参数是一个正则表达式,而在正则表达式中,某些字符(如点.
、星号*
、加号+
、问号?
、反斜杠\
、方括号[]
、大括号{}
和圆括号()
)具有特殊的含义,因此在使用这些特殊字符作为分隔符时需要特别小心。
1)分割拆分字符串进传入的参考字符串是正则表达式中的元字符
\ ^ $ . | ? * + ( [ {
如果字符串包含$
,用$
进行分割,例如,可以使用如下3种方法,
- import java.util.regex.Pattern;
- import java.util.regex.Matcher;
- public class Main {
- public static void main(String[] args) {
- String str= "boo$and$foo";
- //使用正则表达式
- System.out.println(java.util.Arrays.toString(str.split("[$]")));
- //利用Pattern.quote()转义成普通字符
- System.out.println(java.util.Arrays.toString(str.split(Pattern.quote("$"))));
- //通过\\进行转义
- System.out.println(java.util.Arrays.toString(str.split("\\$")));
- }
- }
2)如果需要保留参考字符
例如,有个字符串"0431-87534433",分割拆分之后,"-"需要保留在子字符串中:
- import java.util.regex.Pattern;
- import java.util.regex.Matcher;
- public class Main {
- public static void main(String[] args) {
- //保留在后面子字符串中
- String string1 = "0431-8753";
- String[] parts1 = string1.split("(?<=-)");
- //?<=:正则表达式,反向肯定预查
- String part1 = parts1[0]; // 0431-
- String part2 = parts1[1]; // 8753
- System.out.println(part1);
- System.out.println(part2);
- //保留在前面子字符串中
- String string2 = "0431-8753";
- String[] parts2 = string2.split("(?=-)");
- //?=:正则表达式,正向肯定预查
- String part3 = parts2[0]; // 0431
- String part4 = parts2[1]; // -8753
- System.out.println(part3);
- System.out.println(part4);
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。