gpt4 book ai didi

java - java中特殊字符的转义

转载 作者:行者123 更新时间:2023-12-01 17:34:09 26 4
gpt4 key购买 nike

我有一个以 | (管道)作为分隔符的文本文件。如果我正在读取一列并且该列本身也包含 | ,那么它会在分隔另一列的同时创建。

示例:

name|date|age
zzz|20-03-22|23
"xx|zz"|23-23-33|32

如何转义双引号内的字符 ""如何转义分割中使用的正则表达式,以便它适用于用户指定的分隔符我努力了 String[] cols = line.split("\|"); System.out.println("只看列=="+cols[1]);

最佳答案

How can I escape the character within the double quotes ""

这是一种方法:

String str = "\"xx|zz\"|23-23-33|32";

Matcher m = Pattern.compile("\"[^\"]*\"").matcher(str);
StringBuffer sb = new StringBuffer();
while (m.find())
m.appendReplacement(sb, m.group().replace("|", "\\\\|"));

m.appendTail(sb);

System.out.println(sb); // prints "xx\|zz"|23-23-33|32
<小时/>

为了取回列,您需要执行以下操作:

String str = "\"xx\\|zz\"|23-23-33|32";
String[] cols = str.split("(?<!\\\\)\\|");

for (String col : cols)
System.out.println(col.replace("\\|", "|"));
<小时/>

关于您的编辑:

how to escape the regular expression used in the split, so that it works for user-specified delimiters

您应该在要分割的字符串上使用Pattern.quote:

String[] cols = line.split(Pattern.quote(delimiter));

这将确保分割按预期工作,即使 delimiter 包含特殊的正则表达式符号,例如 .|

关于java - java中特殊字符的转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8063238/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com