如何使用java仅在链接值之间添加空格

时间:2012-09-29 20:25:03

标签: java string string-formatting

我有一个字符串,它应该返回多个字符串的串联,例如“bob”“bill”“steve”。最终结果应该像“bob bill steve”。如何在不使用Java添加最终单词之前或之后添加空格?

7 个答案:

答案 0 :(得分:7)

使用Guava Libraries

String[] names = {"bill", "bob", "steve" };
String fullString = Joiner.on(" ").join(names);

在Java 8中:

String fullString = String.join(" ", names)

答案 1 :(得分:1)

听起来你正在迭代字符串以连接,例如:

StringBuilder sb = new StringBuilder();
for (String str : strings)
    sb.append(str).append(" ");  
result = sb.toString();

最后你最终得到了一个空间。如果是这样,您可以使用String.trim方法来消除额外的空间:

result = result.trim();

trim删除所有前导和尾随空格。

答案 2 :(得分:1)

我建议使用StringBuilder,以防你在迭代String数组。像这样:

StringBuilder buffer = new StringBuilder();

//Assuming you have a string array;

int length = stringArray.length;

for(int index = 0; index < length; index++){
    if(index > 0)
        buffer.append(" ");
    buffer.append(stringArray[index]);
}

return buffer.toString();

答案 3 :(得分:1)

这就是我这样做的方式

public static boolean isEmpty(String string) {
    return string == null || string.trim().length() == 0;
}

public static String concatenate(final String separator, final String... parameters) {

    StringBuilder result = new StringBuilder("");

    for (String param : parameters) {
        if (!isEmpty(param)) {
            if (result.length() > 0) {
                result.append(separator);
            }
            result.append(param);
        }
    }

    return result.toString();
}

答案 4 :(得分:0)

您可以使用StringBuilder来构建字符串,如下所示:

StringBuilder sb = new StringBuilder();
sb.append("bill").append(" ");
//and so on..

如果您的值在列表或数组中,则可以使用for循环来构建字符串。类似的东西:

foreach(String s: strings){
    sb.append(s).append(" ");
}
sb.toString.trim();

答案 5 :(得分:0)

因为在循环中使用“+”不是最好的主意,您也可以尝试使用:

    String foo [] = {"asd", "bbb", "ccc"};
    StringBuilder sb = new StringBuilder();
    for (String string : foo) {
        sb.append(string).append(" ");
    }
    String result = sb.toString().trim();

答案 6 :(得分:0)

啊,是的......我最喜欢的一个......你正在寻找一个Separator。这是一个。它附带了一些示例static实用程序方法来演示它的用法。还有更多的用法。

public class Separator {
  private final String sepString;
  private final String firstString;
  boolean first = true;

  // Use for url params ("?","&").
  public Separator(final String first, final String sep) {
    this.sepString = sep;
    this.firstString = first;
  }

  // Use for commas etc.
  public Separator(final String sep) {
    this("", sep);
  }

  public String sep() {
    // Return empty string first and then the separator on every subsequent invocation.
    if (first) {
      first = false;
      return firstString;
    }
    return sepString;
  }

  public void reset() {
    first = true;
  }

  @Override
  public String toString() {
    return first ? "(" + sepString + ")" : sepString;
  }

  // Utilities.
  public StringBuilder addAll(final StringBuilder buf, final Iterable<?> values) {
    if (null == values) {
      return buf;
    }
    for (final Object v : values) {
      buf.append(sep()).append(v);
    }
    return buf;
  }

  public StringBuilder addAll(final StringBuilder buf, final Iterator<?> values) {
    if (null == values) {
      return buf;
    }
    while ( values.hasNext() ) {
      buf.append(sep()).append(values.next());
    }
    return buf;
  }

  public StringBuilder addAll(final StringBuilder buf, final Object... values) {
    if (null == values) {
      return buf;
    }
    for (final Object v : values) {
      buf.append(sep()).append(v);
    }
    return buf;
  }

  public StringBuilder addAll(final StringBuilder buf, final int... values) {
    if (null == values) {
      return buf;
    }
    for (final int v : values) {
      buf.append(sep()).append(v);
    }
    return buf;
  }

  public static String separate ( String separator, int [] ints ) {
    return new Separator(separator).addAll(new StringBuilder(), ints).toString();
  }

  public static String separate ( String separator, long [] longs ) {
    return new Separator(separator).addAll(new StringBuilder(), longs).toString();
  }

  public static String separate ( String separator, Object [] objs ) {
    return new Separator(separator).addAll(new StringBuilder(), objs).toString();
  }

  public static String separate ( String separator, Set them ) {
    return new Separator(separator).addAll(new StringBuilder(), them).toString();
  }

  public static String separate ( String separator, Iterator<?> i ) {
    return new Separator(separator).addAll(new StringBuilder(), i).toString();
  }

}