我有一个要解析的字符串。
M|N| | |"DANGER| AWESOME"|N|N| | | |
分隔符是竖线(|)符号。但是管道可以是令牌的一部分。在这种情况下,它用双引号括起来。是否存在我可以使用的现有库/函数,它允许我指定分隔符或开始/结束分隔符(|"和" |)。 StringTokenizer不起作用,因为它会在DANGER中计算管道真棒作为分隔符。我觉得必须有一个解决方案,比按字符检查字符串字符/创建自定义解析器更乏味。
答案 0 :(得分:1)
怎么样?
String regex = "\\|(?=([^\"]*\"[^\"]*\")*[^\"]*$)";
测试:
public static void main(String[] args) throws Exception {
String x = "M|N| | |\"DANGER| AWESOME\"|N|N| | | |";
String regex = "\\|(?=([^\"]*\"[^\"]*\")*[^\"]*$)";
String[] y = x.split(regex);
for(String s : y) {
System.out.println(s);
}
System.out.println("************* DONE ***********");
}
输出:
M
N
"DANGER| AWESOME"
N
N
************* DONE ***********