java - 如何用制表符替换行开头的所有空格?

标签 java regex string replace whitespace

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

我想到使用循环和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();

但这似乎太难了。

最佳答案

这应该有效:

str = str.replaceAll("(?m)^\\s+", "\t");

(?m) 标志表示“克拉和美元匹配行的开头和结尾”,因此 ^ 将匹配字符串中每一行的开头。

关于java - 如何用制表符替换行开头的所有空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20859008/

相关文章:

java - 为什么 EJB 是线程安全的而 servlet 不是?

java - GAE 后端/任务队列 - 如何在参数中传递用户凭据?

c# - float 和百分比的正则表达式

java - 在大数据集上使用正则表达式时的空间和时间问题

java - Hibernate EnVers 中的@NotAudited 和 RelationTargetAuditMode.NOT_AUDITED 有什么区别?

java - tomcat中简单的SESSION操作,内存占用持续增长

javascript - 正则表达式 : How to catch anything between parenthesis except when its between square brackets

string - 我正在使用 Java 通过在代码中动态生成查询来从 Elasticsearch 中获取一些记录。查询需要一个字符串

php - 在 PHP 中,将字符串与关键字列表进行匹配的最有效方法是什么?

c - 如何更改字符串数组中的字符?