[英]How to add spaces only between catenated values using java
I have a string that supposed to return a concatenation of multiple strings such as "bob" "bill" "steve". 我有一个字符串,应该返回多个字符串的串联,例如“ bob”,“ bill”,“ steve”。 The end result should look like "bob bill steve". 最终结果应类似于“鲍勃·比尔·史蒂夫”。 How can I add a space without adding one before or after the final words using Java? 如何在不使用Java的最后一个单词之前或之后添加一个空格的情况下添加空格?
Using Guava Libraries : 使用番石榴库 :
String[] names = {"bill", "bob", "steve" };
String fullString = Joiner.on(" ").join(names);
In Java 8: 在Java 8中:
String fullString = String.join(" ", names)
It sounds like you're iterating over the strings to concatenate, something like: 听起来您正在遍历要连接的字符串,类似:
StringBuilder sb = new StringBuilder();
for (String str : strings)
sb.append(str).append(" ");
result = sb.toString();
And you end up with a space at the end. 最后,您将得到一个空格。 If so, you can use the String.trim
method to get rid of that extra space: 如果是这样,则可以使用String.trim
方法摆脱多余的空间:
result = result.trim();
trim
removes all leading and trailing whitespace. trim
删除所有前导和尾随空格。
I would suggest using a StringBuilder , in case you're iterating through an array of String. 我建议使用StringBuilder ,以防您遍历String数组。 Something like this: 像这样:
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();
This is the way I'm doing it 这就是我做的方式
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();
}
You can use a StringBuilder
to build your string like this: 您可以使用StringBuilder
来构建您的字符串,如下所示:
StringBuilder sb = new StringBuilder();
sb.append("bill").append(" ");
//and so on..
If your values are in a list or an array you can use a for
loop to build your string. 如果您的值在列表或数组中,则可以使用for
循环来构建您的字符串。 Something like: 就像是:
foreach(String s: strings){
sb.append(s).append(" ");
}
sb.toString.trim();
Because using "+" in loops isn't the best idea, you can try also with: 因为在循环中使用“ +”并不是最好的主意,所以您也可以尝试使用:
String foo [] = {"asd", "bbb", "ccc"};
StringBuilder sb = new StringBuilder();
for (String string : foo) {
sb.append(string).append(" ");
}
String result = sb.toString().trim();
Ah yes ... one of my favourites ... you are looking for a Separator
. 啊是的...我的最爱之一...您正在寻找Separator
。 Here's one. 这是一个 It comes with some sample static
utility methods to demonstrate its use. 它带有一些示例static
实用程序方法来演示其用法。 There are many more usages. 还有更多用法。
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();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.