我有一个要解析的字符串。
M|N| | |"DANGER| AWESOME"|N|N| | | |
分隔符是竖线 (|) 符号。然而,管道可以是 token 的一部分。在这种情况下,它用双引号引起来。是否有一个现有的库/函数可供我使用,让我指定分隔符或开始/结束分隔符(|”和“|)。 StringTokenizer 不起作用,因为它会对 DANGER| 中的管道进行计数作为分隔符非常棒。我觉得一定有一种解决方案比逐字符检查字符串/创建自定义解析器更简单。
最佳答案
怎么样?
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 ***********
关于Java解析-分隔符也可以是标记的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26222832/