1

我被正则表达式的这个问题所困扰。

假设我有一个从包含的文件中读取的字符串。

first_name, Hello, "test Drive"

然后我将split,用作分隔符。我会得到

myString[0] = "first_name";
myString[1] = "Hello";
myString[2] = "\"test Drive\"";

我的问题是当系统读取,双引号内的字符串时

first_name, Hello, "test, Drive"

我明白了

myString[0] = "first_name";
myString[1] = "Hello";
myString[2] = "\"test"
myString[3] = "Drive\"";

我的问题

我将如何使用,作为分隔符的字符串拆分字符串,条件是"它的左侧和右侧不存在......或者是否有一些解决方法会更容易?

谢谢。

4

2 回答 2

2

看起来您正在处理 CSV 文件。您是否已经考虑过使用其中一个 CSV 库来执行此操作(如 opencsv 或 supercsv)?

于 2013-09-05T06:13:50.223 回答
0

如果您知道明确的正则表达式限制,直到您想要拆分的位置,那么下面将适用于您

        String test = "first_name, Hello, \"test, Drive\"";


        String[] tests = test.split(", ", 3);

        System.out.println("1  " + tests[0]);
        System.out.println("1  " + tests[1]);
        System.out.println("1  " + tests[2]);

 output :-
   1  first_name
   2  Hello
   3  "test,Drive"

如果您不知道限制,则输入字符串应采用以下格式,如果您可以在 qutoes 中格式化字符串,该字符串只有 (,) 而没有空格.. 其他文本分隔符带有一个逗号 (,) 和空格 ()

String test = "first_name, Hello, \"test,Drive\"";


        String[] tests = test.split(", ");

        System.out.println("1  " + tests[0]);
        System.out.println("1  " + tests[1]);
        System.out.println("1  " + tests[2])

output :-
       1  first_name
       2  Hello
       3  "test,Drive"
于 2013-09-05T06:46:42.663 回答