我想要替换字符串,但是我无法解析应该使用哪个正则表达式。
首先我有很多这样的字符串;
String rawString = "w1.28-user_request"
然后,我想得到这样的字符串;
w1_28-user_request
正如我所说,我有一些类似的字符串; week1.detailed_design
所以在这种情况下我将有 week1_detailed_design
。最后我只需要处理 w1.23_design_req-open
PS:用户、请求等只是一个示例命名对象
请考虑到,以下用法对我来说没有用,因为除了上述情况之外,我已经有了 "."
。例如;
user.request_updated
所以我只需要知道如何处理这种情况:w2.25-update_request
rawString.replaceAll("\\.","_"); // not useful
最后,模式如下;
- string1.2string 应为 string1_2string
- 1.2string 应为 1_2string
- string1.2 应为 string1_2
最佳答案
您需要替换用数字括起来的 .
。
使用
rawString = rawString.replaceAll("(\\d)\\.(\\d)","$1_$2");
图案详细信息:
(\\d)
- 第 1 组中捕获的数字(通过替换模式中的$1
引用)\\.
- 文字点(\\d)
- 第 2 组中捕获的数字(通过替换模式中的$2
引用)
请参阅Java demo :
List<String> strs = Arrays.asList("string1.2string", "string1.2", "1.2string");
for (String str : strs)
System.out.println(str.replaceAll("(\\d)\\.(\\d)", "$1_$2"));
输出:
string1_2string
string1_2
1_2string
关于java - 需要使用replaceAll方法进行替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42926182/