如何将非数字替换为其他非数字java

时间:2013-04-17 03:24:14

标签: java string replace

我想用字符串中的其他非数字字符替换非数字字符。例如,在下面,更改

4/14/2013%Univ. of Massachusetts-Amherst%Sacred Heart University%7-0

4/14/2013%Univ. of Massachusetts-Amherst%Sacred Heart University%7%0

我不想删除所有连字符,只是数字之间的连字符。我试图使用

line.replaceAll("-\\d+", "%\\d+");

但是用文字d+

替换第二个数字

2 个答案:

答案 0 :(得分:1)

string.replaceAll()中的参数更改为此"-(\\d+)", "%$1",此处$1表示group 1

捕获的(\\d+)

答案 1 :(得分:1)

首先,当你在JAVA中处理正则表达式时,你需要两个反斜杠。 \\转义序列将在运行时转换为单个反斜杠。现在,为了“捕获”一段初始表达式,您需要使用capture groups。通过在括号中放置一段正则表达式,您可以“捕获”要在替换中使用的那段字符串。因此,初始字符串将是(\\d)-(\\d),其中第一个捕获组是连字符前面的数字,第二个是后面的数字。

要将这些数字替换回字符串,您需要使用语法来捕获它们,在JAVA中是$。结果字符串应为$1%$2,表示“捕获组1,后跟%,然后是捕获组2”。

你的最后一行代码看起来像这样:

line.replaceAll("(\\d)-(\\d)", "$1%$2");