2011-04-23 50 views
0

我不得不作出下面的聲明作爲string.i我嘗試,但它給無效的字符序列。我知道這是基本的,但無法做到這一點。讚賞這一點的任何幫助。使用java的字符串格式

String str="_1"; 

'\str%' ESCAPE '\' 

Output should be: '\_1%' ESCAPE '\'. 

感謝,

Chaitu

+0

您只顯示了一行實際代碼。請改爲發佈一個簡短但完整的示例。我的猜測是,你正在尋找一種真正不被Java支持的字符串插值方式,但很難說清楚... – 2011-04-23 11:00:23

回答

1
String result = "'\\" + str + "%' ESCAPE '\\'"; 
1

裏面一個字符串,反斜槓字符將 「越獄」 之後的字符 - 這會導致區別對待這個角色。

由於\有這個特殊的含義,如果你真的想\字符本身在字符串中,你需要把\\。第一個反斜槓轉義第二個,導致它在字符串內被當作文字\

知道這一點,你應該能夠構造出你需要的結果字符串。希望這可以幫助。

0
String str="_1"; 
String output = String.format("'\\%s%%' ESCAPE '\\'",str); 
System.out.println(output);//prints '\_1%' ESCAPE '\' 
1
String str="_1"; 
String source = "'\\str%' ESCAPE '\\'"; 
String result = source.replaceAll("str", str); 

實現串插的另一種方式。 replaceAll函數在源字符串中查找所有匹配的str,並將其替換爲傳入的參數。

爲了編碼反斜線\在Java字符串,你要複製它,因爲一個反斜槓工作作爲轉義字符。

請注意,如果replaceAll的第一個參數實際上是regular expression,所以某些字符具有特殊含義,但對於簡單的話它將按預期工作。