簡體   English   中英

使用Java從多行字符串中刪除空行

[英]Remove empty line from a multi-line string with 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

"""

使用正則表達式(?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]+", "");

您當前的嘗試似乎非常正確,我認為您想要的邏輯是僅用一個換行符替換兩個或多個換行符:

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

捕獲實際使用的換行符類型(對於Linux為\\n或對於Windows為\\r\\n )的訣竅是先捕獲單個\\r?\\n ,然后再捕獲至少一個換行符。

時髦的高爾夫!

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM