簡體   English   中英

Java中的轉義報價功能不起作用

[英]Escape quote function in java not working

在打印出來之前,我需要對字符串中的引號進行轉義。

我編寫了一個函數,使用char數組盡可能明確。 但是此功能似乎要做的就是打印出自己的輸入:

public static String escapeQuotes(String myString) {
 char[] quote=new char[]{'"'};
 char[] escapedQuote=new char[]{'\\' , '"'};
 return myString.replaceAll(new String(quote), new String(escapedQuote));
}

public static void main(String[] args) throws Exception {
 System.out.println("asd\"");
 System.out.println(escapeQuotes("asd\""));
}

我希望它的輸出是:asd“ asd \\”

但是我得到的是:asd“ asd”

任何想法如何正確地做到這一點?

謝謝

我會嘗試replace而不是replaceAll 第二個版本是為正則表達式AFAIK設計的。

編輯
來自replaceAll文檔
請注意,替換字符串中的反斜杠(\\)和美元符號($)可能導致結果與被視為文字替換字符串時的結果不同
因此,第二個參數中的反斜杠是一個問題。

到文檔的直接鏈接
http://download.oracle.com/javase/6/docs/api/java/lang/String.html#replaceAll(java.lang.String,java.lang.String

您還需要將\\轉義為\\\\否則原始字符串中的任何\\都將保留\\和解析器,認為必須在\\后跟一個特殊字符(例如" )會感到困惑。

放入Java文字字符串中的每個\\"字符都必須以\\開頭。

您要使用replace而不是replaceAll因為前者處理字符串,后者處理正則表達式。 在您的情況下,正則表達式將變慢,並且需要更多的反斜杠。

CharSequence一起使用的replace ,即從Java 1.5開始存在String

myString = myString.replace("\\", "\\\\");
myString = myString.replace("\"", "\\\"");

Java隨附了用於轉義正則表達式和替換的現成方法:

public static String escapeQuotes(String myString) { 
  return myString.replaceAll(Pattern.quote("\""), Matcher.quoteReplacement("\\\"")); 
}

暫無
暫無

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

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