我怎么解析一个String str = "abc, \"def,ghi\"";
这样我得到了输出
String[] strs = {"abc", "\"def,ghi\""}
Run Code Online (Sandbox Code Playgroud)
即一个长度为2的数组.
我应该使用正则表达式还是java api或任何其他开源中的任何方法
让我这样做的项目?
编辑
为了给出问题的背景,我正在阅读一个文本文件,其中每行有一个记录列表.每条记录都有以分隔符(逗号或分号)分隔的字段列表.现在我有一个要求,我必须支持文本限定符一些excel或开放办公室支持.假设我有记录
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;
}
Run Code Online (Sandbox Code Playgroud)