猿问

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

我有一个多行字符串和其他行之间的一些空行。看起来像:


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


"""


慕娘9325324
浏览 214回答 3
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]+", "");

饮歌长啸

绝妙的高尔夫!msg.split('\n')    .findAll { it.trim() }    .join('\n')

犯罪嫌疑人X

您当前的尝试似乎非常正确,我认为您想要的逻辑是用一个换行符替换两个或多个换行符:output = msg.replaceAll("(\r?\n)(?:\r?\n){1,}", "$1");这里的技巧是捕获正在使用的实际换行符类型(\n对于 Linux 或\r\nWindows),是\r?\n先捕获一个,然后再捕获至少一个换行符。
随时随地看视频慕课网APP

相关分类

Java
我要回答