2016-12-04 246 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)