用Non-Disclosed替换空字符串

时间:2017-02-22 14:56:56

标签: java

我是Java的新手所以请原谅我的经验不足。我有一个像下面的列(源),它有空字符串,我试图用Non-Disclosed替换它。

Source

Website
Drive-by
Realtor
Social Media

Billboard

Word of Mouth

Visitor

我试过了:

String replacedString = Source.replace("", "Non-Disclosed");

运行上面的代码片段后,所有内容都会被Non-Disclosed:

取代
Non-Disclosed
Non-Disclosed
Non-Disclosed
............

我该如何解决这个问题?任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:3)

我认为你只需做:Source.replace("\n\n", "\nNon-Disclosed\n")

答案 1 :(得分:3)

我假设您的整个列都存储在一个字符串中。

在这种情况下,您可以使用^$正则表达式来表示空行(使用MULTILINE标记(?m),这将允许^$表示行的开头和结尾) 。
这种方法

  • 适用于多个行分隔符\r \n \r\n
  • 不会消耗这些行分隔符,因此我们不需要将它们添加回替换部分。

要在替换时使用正则表达式,我们可以使用replaceAll(regex, replacement)方法

样本:

String text = "Source\r\n" + 
        "\r\n" + 
        "\r\n" + 
        "\r\n" + 
        "Website\r\n" + 
        "Drive-by\r\n" + 
        "Realtor\r\n" + 
        "Social Media\r\n" + 
        "\r\n" + 
        "Billboard\r\n" + 
        "\r\n" + 
        "Word of Mouth\r\n" + 
        "\r\n" + 
        "Visitor";
text = text.replaceAll("(?m)^$", "Non-Disclosed");
System.out.println(text);

输出:

Source
Non-Disclosed
Non-Disclosed
Non-Disclosed
Website
Drive-by
Realtor
Social Media
Non-Disclosed
Billboard
Non-Disclosed
Word of Mouth
Non-Disclosed
Visitor

答案 2 :(得分:1)

您可以使用

 String replacedString = Source.trim().isEmpty() ? "Non-Disclosed" : Source;

仅替换“空白”字符串。