簡體   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