我有一個多行字符串和其他行之間的一些空行。看起來像: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]+", "");

犯罪嫌疑人X
TA貢獻2080條經驗 獲得超4個贊
您當前的嘗試似乎非常正確,我認為您想要的邏輯是用一個換行符替換兩個或多個換行符:
output = msg.replaceAll("(\r?\n)(?:\r?\n){1,}", "$1");
這里的技巧是捕獲正在使用的實際換行符類型(\n
對于 Linux 或\r\n
Windows),是\r?\n
先捕獲一個,然后再捕獲至少一個換行符。
舉報
0/150
提交
取消