如何用标签替换行开头的所有空格?

Boh*_*ian 2 java regex string whitespace replace

有一种简单的方法可以用一个制表符替换行开头的所有空格吗?

我想过使用一个循环和一个StringBuffer:

String s = "some multi line text\n      foo bar\n   blah";
StringBuffer sb = new StringBuffer(s);
for (int i = 0; i < sb.length(); i++) {
    if (sb.charAt(i) == '\n') {
        while (sb.charAt(i + 1) == ' ')
            sb.delete(i + 1, i + 2);
        sb.insert(i + 1, '\t');
    }
}
s = sb.toString();
Run Code Online (Sandbox Code Playgroud)

但这似乎太难了.

Boh*_*ian 5

这应该工作:

str = str.replaceAll("(?m)^\\s+", "\t");
Run Code Online (Sandbox Code Playgroud)

(?m)标志表示"克拉和美元匹配行的开始和结束",因此^将匹配字符串中每一行的开头.