如何解析 String str = "abc,\"def,ghi\""
;
这样我得到的输出是
String[] strs = {"abc", "\"def,ghi\""}
即长度为 2 的数组。
我应该使用正则表达式还是java api或任何其他开源中有任何方法
让我做这个的项目?
已编辑
为了提供有关该问题的上下文,我正在阅读一个文本文件,其中每行都有一个记录列表。每条记录都有由分隔符(逗号或分号)分隔的字段列表。现在我有一个要求,我必须支持文本限定符,比如 excel 或 open office 支持。假设我有记录
abc, "def,ghi"
在这里,是我的定界符,"是我的文本限定符,这样当我解析这个字符串时,我应该得到两个字段 abc 和 def,ghi 而不是 {abc,def,ghi}
希望这能解决我的要求。
谢谢
谢卡尔
最佳答案
基本算法并不太复杂:
public static List<String> customSplit(String input) {
List<String> elements = new ArrayList<String>();
StringBuilder elementBuilder = new StringBuilder();
boolean isQuoted = false;
for (char c : input.toCharArray()) {
if (c == '\"') {
isQuoted = !isQuoted;
// continue; // changed according to the OP comment - \" shall not be skipped
}
if (c == ',' && !isQuoted) {
elements.add(elementBuilder.toString().trim());
elementBuilder = new StringBuilder();
continue;
}
elementBuilder.append(c);
}
elements.add(elementBuilder.toString().trim());
return elements;
}
关于java - 如何解析具有文本限定符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3178008/