如何用分隔符分割字符串?

时间:2019-10-21 17:14:11

标签: java java-8

我有一个字符串a="-4--5-6"
当我执行a.split("-")时,结果是{4,5,6}但我想要{4,-5,6}。要获得答案的正则表达式是什么?

1 个答案:

答案 0 :(得分:1)

使用正向后向查找在数字后的-

a.split("(?<=\\d)-");

(?<=u)是正向后看,其中u代表要查找的字符,\\d代表任何数字字符。这会寻找跟随数字的-,但不会在捕获的字符中包含该数字,因此拆分不会删除该数字,而只是删除-字符。

例如

import java.util.Arrays;

public class Foo {
    public static void main(String[]args) {
        String a = "-4--5-6";
        System.out.println(a);

        String[] b = a.split("(?<=\\d)-");
        System.out.println(Arrays.toString(b));
    }
}

请注意,这将返回

[-4, -5, 6]

由于前4个字符前面带有负号

有关更多信息,请查看this regular expressions tutorial


对于您的示例,其中String为:

String a = "1-2--3-4";

这将返回:

[1, 2, -3, 4]

您真正想要的是什么

public static void main(String[]args) {
    String a = "1-2--3-4";
    System.out.println(a);

    String[] b = a.split("(?<=\\d)-");
    System.out.println(Arrays.toString(b));
}