繁体   English   中英

转义序列无法正常工作

[英]Escape sequence not working as desired

我必须读取一个文件,然后将一些内容写入一些输出文件。 在输入和输出文件中,我都使用管道定界符:-

private static final String COLUMNDELIMITER = "\\|";

我可以完美地读取输入文件,但是对于输出文件,这些行如下所示:

abc\|123\|kk

但我希望它是:

abc|123|kk

为什么同一个定界符在读取和写入时表现不同?

当我阅读一行时,我正在使用:

String[] elements = record.split(COLUMNDELIMITER); //works perfect

在写作时,我正在使用:

String lineToWrite = String1 + COLUMNDELIMITER + String2 + COLUMNDELIMITER + String3 //Does not work rightly

String.split具有正则表达式,并且管道( | )具有特殊含义,因此需要对其进行转义。 这是使用反斜杠( \\ )完成的,需要在Java字符串中对其进行转义,因此您需要在字符串文字中使用双反斜杠(\\)。 但是,连接时,您只需要| ,而不是\\|

因此,改为使用:

private static final String COLUMNDELIMITER = "|";

拆分时,请使用java.util.regex.Pattern#quote对其进行java.util.regex.Pattern#quote

String[] elements = record.split(Pattern.quote(COLUMNDELIMITER));

这样,您的串联就可以了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM