删除每行开头的空格并结束每行的结尾

mol*_*iko 1 java regex

我有一个这样的字符串:

Mr Moh Jo\n
Address\n
 33333 City\n\n
Aland Islands
Run Code Online (Sandbox Code Playgroud)

我想删除每行开头的空格并使用以下代码结束每行的结尾,但它不起作用

    public static String trimWhiteSpaceFromTheBeginingAndEndOFTheLine(
        String string) {
    Pattern trimmer = Pattern.compile("^\\s+|\\s+$");
    Matcher m = trimmer.matcher(string);
    StringBuffer out = new StringBuffer();
    while (m.find())
        m.appendReplacement(out, "");
    m.appendTail(out);

    return out.toString();
}
Run Code Online (Sandbox Code Playgroud)

预期结果:

Mr Moh Jo\n
Address\n
33333 City\n\n
Aland Islands
Run Code Online (Sandbox Code Playgroud)

Rok*_*okL 5

只需在正则表达式中启用多行标志。

Pattern.compile("(?m)^[\\s&&[^\\n]]+|[\\s+&&[^\\n]]+$");

砰。完毕。

您还可以使用replaceAllcall替换所有匹配器代码:

public static String trimWhiteSpaceFromTheBeginingAndEndOFTheLine(
    String string) {
    return string.replaceAll("(?m)^[\\s&&[^\\n]]+|[\\s+&&[^\\n]]+$", "");
}
Run Code Online (Sandbox Code Playgroud)

  • @Molwiko 修复了表达式 (2认同)