java中优雅的切割字符串

2021/4/15 12:26:42

本文主要是介绍java中优雅的切割字符串,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

切割字符串

分隔字符串是java中常用的操作,String的split方法可以进行字符串切割操作,然而日常使用却仅仅限于str.split("-"),其中“-”为分隔符。其实split方法很强大,有更优雅的方式去切割字符串

使用方法

public String[] split(String regex)

其中regex代表正则表达式分隔符,我们平时使用单个字符作为分隔符,其实可以看做是特殊的正则表达式,特殊之处在于这种表达式在匹配自身,如"-"只匹配"-",示例如下:

String string = "86-15003455666";
String[] parts = string.split("-");
String part1 = parts[0]; // 86
String part2 = parts[1]; // 15003455666

split还有另一种用法

public String[] split(String regex,int limit)

regex指的是正则表达式分隔符,limit值的是分隔的份数,如:

String string = "004-556-42";
String[] parts = string.split("-", 2);   // 限定分割两份
String part1 = parts[0]; // 004
String part2 = parts[1]; // 556-42

在某些场景下,我们可能想要在结果中保留分隔符,这也是可以做到的,设置分隔符与分割后的左侧结果相连

String string = "86-15003455666";
String[] parts = string.split("(?<=-)");
String part1 = parts[0]; // 86-
String part2 = parts[1]; // 15003455666

设置分隔符与分割后右侧的结果相连:

String string = "86-15003455666";
String[] parts = string.split("(?=-)");
String part1 = parts[0]; // 86-
String part2 = parts[1]; // 15003455666

所以说要妙用正则表达式,代码示例:

//\d代表数字,+代表出现一次或多次。所以(\\d+)-(\\d+)匹配用"-"相连的两个数字串
    // Pattern 对象是正则表达式的编译表示
    private static Pattern twopart = Pattern.compile("(\\d+)-(\\d+)");

    public static void checkString(String s)
    {
        // Matcher对象对输入字符串进行解释和匹配操作
        Matcher m = twopart.matcher(s);
        if (m.matches()) {
            //m.group(1) 和 m.group(2) 存储分割后的子串
            System.out.println(s + " matches; first part is " + m.group(1) +
                    ", second part is " + m.group(2) + ".");
        } else {
            System.out.println(s + " does not match.");
        }
    }

    public static void main(String[] args) {
        checkString("123-4567");  // 匹配
        checkString("s-tar");    // 字母序列,不匹配
        checkString("123-");    // "-"右侧的数字串为空,不匹配
        checkString("-4567");    // "-"左侧的数字串为空,不匹配
        checkString("123-4567-890");    // 存在两个"-",不匹配
    }

运行结果:

123-4567 matches; first part is 123, second part is 4567.
s-tar does not match.
123- does not match.
-4567 does not match.
123-4567-890 does not match.


这篇关于java中优雅的切割字符串的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程