2013-05-30 161 views
2

我有一個字符串中的java變量的名稱。我想用字母x代替它。我怎樣才能做到這一點,並確保字符串中的其他單詞不被替換?java正則表達式匹配變量

例如,說我的變量是res,我的字符串爲「res = res + pres + resd + _res我希望字符串成爲x = x + pres + resd + _res

回答

1

您可以用一個字邊界只捕獲全字:。

String s = "res = res + pres + resd + _res"; 
String var = "res"; 
System.out.println(s.replaceAll("\\b" + var + "\\b", "x")); 

輸出x = x + pres + resd + _res

+0

我真的想任何一個正確的方式來創建一個變量(如允許由被考慮到語言本身)。我在原始文章中添加了_res以反映此示例。 「res = res + pres」也應該工作,即使沒有空格 – Car981

+0

@ Car981我建議的代碼也可以用'_res'或'res = res + pres'工作。 – assylias

+0

好吧,它是否也可以使用美元符號,數字以及這裏給出的基本任何內容:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html#naming? – Car981

0

您可以使用\b元字符來匹配單詞邊界(請記住,您需要使用雙向反斜槓來轉義此。在Java中)

所以,你可以這樣做以下:

final String searchVar = "res"; 
final String replacement = "x"; 
final String in = "res = res + pres + resd + _res"; 

final String result = in.replaceAll("\\b" + searchVar + "\\b", replacement); 
System.out.println(result); 
// prints "x = x + pres + resd + _res"