【发布时间】:2014-02-13 21:45:17
【问题描述】:
我在将字符串插入 String[] 数组时遇到问题。我有以下字符串:
12343,"Den Haag, Willem de Zwijgerlaan",lol,"HI",ZF-32,"TZ,45,38"
或者例如这个字符串:
"Another String",44,33,"TZ,38",ok
这只是我的应用程序要渗透的数百万个字符串中的一个。问题是这种情况下的分隔符是, 字符。然而,它有时会被烘焙到其中一个字段中。
现在您可以看到"Den Haag, Willem de Zwijgerlaan" 具有该字符,但是它属于该字段并且不能算作分隔符。
我想出了下面的代码,我卡住了。
String before = "12343,\"Den Haag, Willem de Zwijgerlaan\",DH1,\"HI\",ZF-32,\"TZ,45,38\"";
System.out.println(before);
int first = before.indexOf("\"");
if(first != -1) {
Boolean firstTime = true;
int firstPos = 0;
int secondPos = 0;
for (int i = -1; (i = before.indexOf("\"", i + 1)) != -1; ) {
if(firstTime) {
firstPos = i;
firstTime = false;
} else {
secondPos = i;
System.out.println(before.substring(firstPos+1, secondPos));
firstTime = true;
}
}
}
这会导致:
12343,"Den Haag, Willem de Zwijgerlaan",lol,"HI",ZF-32,"TZ,45,38"
Den Haag, Willem de Zwijgerlaan
HI
TZ,45,38
我希望 String[] 数组看起来像这样:
String[] array = {"12343", "Den Haag, Willem de Zwijgerlaan", "lol", "HI", "ZF-32", "TZ,45,38"};
【问题讨论】:
-
也许你应该只寻找分隔符 \
-
答案与任何类似问题的答案相同:不要对非常规字符串使用正则表达式。使用 CSV 解析器。这就是他们的目的。
-
或者安排数据以 JSON 格式发送。
-
@HotLicks 不幸的是,这超出了我的能力范围 :(
-
@HovercraftFullOfEels 谢谢!你回答了我的问题,现在使用 opencsv,它做得很好!我没有意识到这是一个 CSV 转储,总是在学习新事物