我有"Hello,World\\,,1,2,3"的字符串值,我需要用,的分隔符将其拆分。但是,该方法还需要在拆分时识别escpace字符,最终输出需要是一个数组,例如

[Hello, World,, 1, 2, 3]


我有一种方法可以执行此操作,但是它无法识别转义字符。其提供如下,

public static String[] tokenize1(String record, char delimiter) {

        String delim = String.valueOf(delimiter);
        String[] arr = record.split(delim);

        return arr;
    }

最佳答案

您可以尝试对逗号进行拆分,但后面要留一个负数,以断定逗号尚未被反斜杠转义:

String input = "Hello,World\\,,1,2,3";
String[] parts = input.split("(?<!\\\\),");
for (String part : parts) {
    // uncomment to also remove backslash
    // part = part.replaceAll("\\\\,", ",");
    System.out.println(part);
}


输出:

Hello
World\,
1
2
3


Demo

10-07 12:21
查看更多