为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Java 从多行字符串中删除空行

使用 Java 从多行字符串中删除空行

慕娘9325324 2023-04-13 09:47:09
我有一个多行字符串和其他行之间的一些空行。看起来像:def msg = """                AAAAAA                BBBBBB                CCCCCC                DDDDDD                EEEEEE                TEST                FFFFF                GGGGGG"""我尝试了一些正则表达式:msg = msg.replaceAll('(\n\\\\s+\n)+', '')或者msg = msg.replaceAll('(\r?\n){2,}', '$1');但是我正在寻找的东西没有什么好处......是否可以只删除空行?得到这样的东西:def msg = """                    AAAAAA                    BBBBBB                    CCCCCC                    DDDDDD                    EEEEEE                    TEST                    FFFFF                    GGGGGG"""
查看完整描述

3 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

使用正则表达式(?m)^[ \t]*\r?\n"删除空行:

log.info msg.replaceAll("(?m)^[ \t]*\r?\n", "");

要仅保留 1 行,请使用[\\\r\\\n]+

log.info text.replaceAll("[\\\r\\\n]+", "");

如果以后要使用该值,则对其进行赋值

text = text.replaceAll("[\\\r\\\n]+", "");


查看完整回答
反对 回复 2023-04-13
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

绝妙的高尔夫!

msg.split('\n')
   .findAll { it.trim() }
   .join('\n')


查看完整回答
反对 回复 2023-04-13
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

您当前的尝试似乎非常正确,我认为您想要的逻辑是用一个换行符替换两个或多个换行符:

output = msg.replaceAll("(\r?\n)(?:\r?\n){1,}", "$1");

这里的技巧是捕获正在使用的实际换行符类型(\n对于 Linux 或\r\nWindows),是\r?\n先捕获一个,然后再捕获至少一个换行符。


查看完整回答
反对 回复 2023-04-13
  • 3 回答
  • 0 关注
  • 213 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信