簡體   English   中英

將“\\”替換為使用String的replace()的任何其他字符

[英]Replace “\'” with any other character with String's replace()

我不能用String做一個簡單的操作,用'替換''。

示例: t'est\\' - > t'est*

我嘗試過使用replace和replaceAll方法:

字符串s的值為: "t'est\\'" ;

s.replaceAll("\'", "*"); -> result: t*est*
s.replaceAll("\\'", "*"); -> result: t*est*
s.replaceAll("\\\'", "*"); -> result: t*est*
s.replaceAll("\\\\'", "*"); -> result: t'est'

s.replace("\'", "*"); -> result: t'est'
s.replace("\\'", "*"); -> result: t'est'
s.replace("\\\'", "*"); -> result: t'est'
s.replace("\\\\'", "*"); -> result: t'est'

但在任何情況下我都沒有得到結果。

你確定s的價值嗎? '不是一個有意義的轉義字符,所以如果你寫String s = "t'est\\'"s的值將只是"t'est'" 要包含附加的\\字符,您需要通過編寫String s = "t'est\\\\'"來轉義它。 然后,我認為"\\\\\\\\'"將是用於查找它的正則表達式。

怎么樣:

String s="t\'est\\\'";
s = s.replaceAll("\\\\'", "*");
System.out.println(s);

生產:

t'est*

我用http://www.htmlescape.net/javaescape_tool.html逃脫了你的字符串

\\'實際上是一個逃脫' 如果你想要一個真正的'你需要逃避斜線,即寫\\\\\\'

然后你需要用\\\\\\\\'替換它。 在這種情況下,每對斜杠都會產生一個轉義為對於java的斜杠\\ ,而得到的\\\\' \\'對於正則表達式來說是一個\\'

這個怎么樣

String s = "t'est\\'";
System.out.println(s);
System.out.println(s.replace("\\", "*").replace("*'", "*"));

這是輸出的樣子:

t'est\'
t'est*

如果我的理解不正確或需要修改,請告訴我。

你不需要逃避'只是寫

s.replace("'", "*");

替換''


編輯:

如果你想匹配\\'你應該嘗試

s.replace("\\'", "*");

第一個反斜杠將逃脫第二個,'將保持“未轉義”

當你說String s的值為“t'est \\”時,你的意思是它在源中的出現方式嗎? 因為,如果是這樣,你正在使用's'的字符串實際上是“t'est'”,這意味着你永遠不會找到要替換的“\\”。

如果它被聲明為“t'est \\”,那么它將包含“\\”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM