使用 replaceAll 方法需要替换

Replacement needed by using replaceAll method

我想要替换字符串,但是我无法确定应该使用哪个正则表达式。

首先我有很多这样的字符串;

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

最后,模式如下;

您需要替换一个用数字括起来的 .

使用

rawString = rawString.replaceAll("(\d)\.(\d)","_");

图案详情:

  • (\d) - 捕获到第 1 组的数字(通过替换模式中的 </code> 引用)</li> <li><code>\. - 文字点
  • (\d) - 捕获到第 2 组的数字(通过替换模式中的 </code> 引用)</li> </ul> <p>参见 <a href="http://ideone.com/jdRXme" rel="nofollow noreferrer">Java demo</a>:</p> <pre><code>List<String> strs = Arrays.asList("string1.2string", "string1.2", "1.2string"); for (String str : strs) System.out.println(str.replaceAll("(\d)\.(\d)", "_"));

    输出:

    string1_2string
    string1_2
    1_2string