我正在尝试下面的代码:String txt = "D D#";
String txt2 = txt.replaceAll("\\bD\\b", "x").replaceAll("\\bD#\\b", "y");我正在等待 get "x y",但它返回了"x x#"。有什么解决办法?
1 回答
HUWWW
TA贡献1874条经验 获得超12个赞
根据您编辑的问题,您想用单词边界进行替换。
您可以使用此代码来修复:
String txt = "D D#";
String txt2 = txt.replaceAll("\\bD#", "y").replaceAll("\\bD\\b", "x");
//=> "x y"
注意变化:
在用with替换所有单词的.replaceAll("\\bD#", "y")other 之前调用。replaceAllDx
\\b由于#在非单词字符之后不匹配单词边界,因此不使用单词边界。\b被断言的(^\w|\w$|\W\w|\w\W)位置。
另请注意,您还可以使用replaceFirst代替replaceAll并将代码保留为:
String txt2 = txt.replaceFirst("\\bD\\b", "x").replaceFirst("\\bD#", "y");
添加回答
举报
0/150
提交
取消