簡體   English   中英

刪除文本末尾的空白行

[英]Delete blank lines at end of text

我正在嘗試創建一個方法,該方法刪除字符串末尾的空行:

public static String deleteBlankLinesAtEnd(String input)
{
    input = trimToEmptyString(input);
    return input.replaceFirst("\\n{2,}\\z", "");
}

但是,它似乎也刪除了輸入開頭的空行。

我做了一點單元測試:

@Test
public void testDeleteBlankLinesAtEnd()
{
    assertEquals("hej", TextUtils.deleteBlankLinesAtEnd("hej\n\n"));
    assertEquals("hej\nhej", TextUtils.deleteBlankLinesAtEnd("hej\nhej\n\n"));
    assertEquals("hej\n\nhej", TextUtils.deleteBlankLinesAtEnd("hej\n\nhej\n\n"));
    assertEquals("\n\nhej\n\nhej", TextUtils.deleteBlankLinesAtEnd("\n\nhej\n\nhej\n\n"));
}

前三個運行正常,最后一個運行失敗。

更新:當然,trimToEmptyString()是我的問題,因為它也修剪開始。

public static String trimToEmptyString(String input)
{
    if (input == null)
    {
        return "";
    }
    return input.trim();
}

因此,使用正則表達式的所有功能都可以正常工作。

您可以這樣做:

public static String deleteBlankLinesAtEnd(String input)
{
    input = trimToEmptyString(input);
    return input.replaceFirst("\\n{2,}\\z$", "");
}

$應該指示正則表達式匹配字符串末尾之前的任何內容。 在這種情況下,它應該匹配字符串末尾之前的所有新行。

如何替換所有空白行,包括充滿空格的行。

input.replaceFirst("\\n\\s+$", "\n")

正則表達式看起來還可以; 我懷疑trimToEmptyString()有問題。

暫無
暫無

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

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