我想用字符串中的其他非数字字符替换非数字字符。例如,在下面,更改
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+
答案 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");