2012-09-29 51 views
1

我有一個字符串應該返回多個字符串的連接,如「bob」「bill」「steve」。最終的結果應該看起來像「鮑勃法案史蒂夫」。如何在使用Java的最後單詞之前或之後添加空格而不添加空格?如何使用java在鏈接值之間添加空格

+0

這些字符串是數組的一部分嗎?你從哪裏得到*「bob」「bill」「steve」*? – Sujay

回答

1

這聽起來像你遍歷字符串來連接,這樣的:

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

而且你結束了在後面加上一個空格。如果是這樣,你可以使用String.trim方法來擺脫多餘的空間:

result = result.trim(); 

trim刪除所有開頭和結尾的空白。

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(); 
1

我會建議使用StringBuilder,如果你通過一個String數組迭代。事情是這樣的:

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

+1打我吧 – MadProgrammer

+0

@MadProgrammer:啊...最後:D:D – Sujay

+0

然而,我會使用'if(buffer.length()== 0)'而不是'if(index> 0 )',但那只是我... – MadProgrammer

0

因爲在循環使用 「+」 是不是最好的辦法,你也可以用嘗試

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

在Java 8:

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

使用Guava Libraries

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(); 
+0

不知有沒有人可以在沒有圖書館的情況下做任何事情.. – svz

+1

@svz爲什麼要重新發明輪子? (除非你在學術界) – gtgaxiola

+0

@svz站在巨人的肩膀上...... –

1

這是t他的方式,我做

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(); 
} 
+0

不是'String'類有它自己的'isEmpty()'方法? – svz

+0

不符合修剪行爲。我寧願修剪參數以避免多空間。你可以使用String。如果您不需要此功能,則爲空。 –

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(); 
    } 

} 
相關問題