2012-07-31 80 views
3

我需要用一個字符串替換一個字符串,該字符串的內容(固定位置)可能有一個或多個空格。用可變數量的空格替換字符串replaceAll

如:

anotherstring 

(其中可能有更多或更少或沒有空格之間「和字符串),並更換必須區分:

[ string ] 

必須被替換實際上我使用的是這種表達式:

myString.replaceAll("[(?i)string]", "anotherstring"); 

但是這隻適用於沒有空間s在括號和字符串之間。 我如何建立一個表達式來考慮空格?

回答

4

如果你想允許任何空白使用:

myString.replaceAll("\\[\\s*(?i)string\\s*\\]", "anotherstring"); 

如果你希望只允許空間使用:

myString.replaceAll("\\[ *(?i)string *\\]", "anotherstring"); 

請注意,你不是在你的正則表達式躲過[][]是分別標記字符類的開始和結束的正則表達式元字符。

所以一個[(?i)string]一個單個字符的(之一,?i)string

要逐字匹配他們,他們需要通過放置一個轉義匹配之前他們有\\

+0

謝謝你,它的工作。 – Ivan 2012-07-31 13:10:32

3

該表達式不起作用,它只有一個字符類並且會匹配單個字符。你需要"(?i)\\[\\s*string\\s*\\]"

2

您需要包含正則表達式以匹配空格,即空格後跟一個*,該空格匹配任意數量的空格(不包括空格)。如果你至少需要一個空格,你可以用+符號替換它們。

下面是你的情況下,代碼:

String myString="[  String  ]"; 
String result = myString.replaceAll("\\[ *(?i)string *\\]", "anotherstring");