如何将字符串添加到一个String中,Java?

时间:2016-04-05 22:08:33

标签: java

我有4个字符串String 1 ,String 2 ,String 3 , String 4。我想将它们添加到名为phones的字符串中。但是我不想要一个简单的:     String phones = String 1 + "~" + String 2 + "~" + String 3 +"~" + String 4;

如果String 2 and 3为空,我会得到:String 1~~~String 4

如何使phones仅显示非空字符串并在每个字符串之间添加"~"?所以如果String 2 and 3为空,我会得到: 而是String 1 ~ String 4

3 个答案:

答案 0 :(得分:4)

如果您使用的是Java 8或更高版本,则根本不需要太多代码。

String phones = Stream.of( string1, string2, string3, string4 )
               .filter( s -> ! s.isEmpty())  // Filter out empty strings
               .collect( Collectors.joining("~"));

如果您有空值,您也可以过滤这些值。

String phones = Stream.of( string1, string2, string3, string4 )
               .filter( Objects::nonNull )  // <-- Filter out nulls
               .filter( s -> ! s.isEmpty())
               .collect( Collectors.joining("~"));

编辑:在Java 8之前

如果您使用的是早期版本的Java,一种方法是定义所需的操作一次,然后重复调用它。

public static void join( StringBuilder sb, String s ) {
    if ( (null != s) && ! s.isEmpty()) {
        if ( 0 < sb.length()) {
            sb.append( "~" );
        }
        sb.append( s );
    }
}

public static void main(String[] args) {
    StringBuilder sb = new StringBuilder();
    String string1 = "foo", string2 = "", string3 = null, string4 = "bar";

    join( sb, string1 );
    join( sb, string2 );
    join( sb, string3 );
    join( sb, string4 );

    System.out.println( sb.toString() );
}

答案 1 :(得分:2)

您可以使用StringBuilder并检查空StringString.isEmpty()

StringBuilder sb = new StringBuilder();
sb.append(string1);
if (!string2.isEmpty()) {
    sb.append("~").append(string2);
}
if (!string3.isEmpty()) {
    sb.append("~").append(string3);
}
if (!string4.isEmpty()) {
    sb.append("~").append(string4);
}
String phone = sb.toString();

如果除了string4之外的所有字符串都为空,我将得到:~string4。有没有办法防止〜而不添加一堆else if语句?

可以创建一个实用程序(或帮助程序)方法join String

static void join(StringBuilder sb, String str) {
    if (!str.isEmpty()) {
        if (sb.length() > 0) {
            sb.append('~');
        }
        sb.append(str);
    }
}

然后使用

StringBuilder sb = new StringBuilder(string1);
join(sb, string2);
join(sb, string3);
join(sb, string4);
String phone = sb.toString();

答案 2 :(得分:1)

如果您使用的是Java 8,那么现在有java.util.StringJoiner类。

例如:

StringJoiner sj = new StringJoiner("~");
if (!string1.isEmpty())
    sj.add(string1);
if (!string2.isEmpty())
    sj.add(string2);
if (!string3.isEmpty())
    sj.add(string3);
if (!string4.isEmpty())
    sj.add(string4);

String desiredString = sj.toString();