2016-12-04 240 views
1

我試圖找到所有出現的字符串集合,並用新值替換它們之間的內容。我已經嘗試了所有在本網站上找到的Java/regex示例,但都沒有成功。字符串的樣本應該是這樣的:在Java中的2個字符串之間替換字符串

"TestValue 1 VARCHAR(10), TestValue2 FLOAT(126), TestValue3 FLOAT(135)" 

我希望找到並與53,替換所有的值之間「FLOAT(」和「)」,上面的字符串將被替換成:

"TestValue 1 VARCHAR(10), TestValue2 FLOAT(53), TestValue3 FLOAT(53)" 

我該如何用String.replaceAll做到這一點?

我試圖replaceAll("FLOAT(.*?)", "53"),它只是取代了FLOAT因此字符串的樣子:

"TestValue 1 VARCHAR(10), TestValue2 53(126), TestValue3 53(135)" 
+2

爲什麼不做'replaceAll(「T \(\\ d + \)」,「T(53)」);'? –

回答

3

您可以使用\(\)逃避字面括號,然後\d+匹配數字。喜歡的東西,

String s = "TestValue1 VARCHAR(10), TestValue2 FLOAT(126), TestValue3 FLOAT(135)"; 
System.out.println(s.replaceAll("FLOAT\\(\\d+\\)", "FLOAT(53)")); 

輸出是(的要求)

TestValue1 VARCHAR(10), TestValue2 FLOAT(53), TestValue3 FLOAT(53) 
+0

這樣做。非常感謝! – jymbo

2

這是更簡單 - 你的更換是固定的(它不依賴於匹配的文本) - 你總是希望與FLOAT(53)更換

所以使用正則表達式

FLOAT\(\d+\) 

和更換

FLOAT(53)