一种反转java String.split()效果的方法?

jav*_*ld 125 java string split join

我正在寻找一种方法将字符串数组合成一个分隔的字符串.与split()相反.

在我尝试编写自己的论坛之前想要问论坛(因为JDK拥有一切)

Joh*_*ley 92

我知道JDK中没有这方法.Apache Commons Langjoin()StringUtils类中有各种重载方法,可以满足您的需求.

  • javaphild,您应该将此标记为您问题的答案.为自己和@ john-topley赚取一些积分. (21认同)
  • 对于未来的读者:Java 8 有一个 String.join() 方法。 (3认同)

Nat*_*son 44

至少从2009年开始就有一个开放的功能请求.它的长短之处在于它将成为JDK 8的java.util.StringJoiner类的部分功能. http://download.java.net/lambda/b81/docs/api/java/util/StringJoiner.html

如果您有兴趣,这是Oracle问题. http://bugs.sun.com/view_bug.do?bug_id=5015163

更新

以下是String数组中新JDK 8 StringJoiner的示例

String[] a = new String[]{"first","second","third"};
StringJoiner sj = new StringJoiner(",");
for(String s:a) sj.add(s);
System.out.println(sj); //first,second,third
Run Code Online (Sandbox Code Playgroud)

String中的实用程序方法使这更简单:

String s = String.join(",", stringArray);
Run Code Online (Sandbox Code Playgroud)


Dav*_*ard 23

您可以从Arrays实用程序包中隐藏此功能.

import java.util.Arrays;
...
    String  delim = ":",
            csv_record = "Field0:Field1:Field2", 
            fields[] = csv_record.split(delim);

    String rebuilt_record = Arrays.toString(fields).replace(", ", delim).replaceAll("[\\[\\]]", "");
Run Code Online (Sandbox Code Playgroud)

  • 有点晚了,但这听起来像是一个坏主意,除非你绝对肯定地知道你的字符串中永远不会有','.然后它可能远没有效率. (11认同)
  • 很好,不需要外部库!使用Python后,Java感觉非常瘫痪:-( (7认同)

Azd*_*der 16

我在这里得到了以下示例

/*
7) Join Strings using separator >>>AB$#$CD$#$EF

 */

import org.apache.commons.lang.StringUtils;

public class StringUtilsTrial {
  public static void main(String[] args) {

    // Join all Strings in the Array into a Single String, separated by $#$
    System.out.println("7) Join Strings using separator >>>"
        + StringUtils.join(new String[] { "AB", "CD", "EF" }, "$#$"));
  }
}
Run Code Online (Sandbox Code Playgroud)


Bla*_*jac 12

Google还在其Google Collections库中提供了一个joiner类:

Joiner API

Google Collections


Bil*_*ard 10

DZone Snippets上有几个例子,如果你想自己推出一个适用于Collection的代码片段.例如:

public static String join(AbstractCollection<String> s, String delimiter) {
    if (s == null || s.isEmpty()) return "";
    Iterator<String> iter = s.iterator();
    StringBuilder builder = new StringBuilder(iter.next());
    while( iter.hasNext() )
    {
        builder.append(delimiter).append(iter.next());
    }
    return builder.toString();
}
Run Code Online (Sandbox Code Playgroud)


Den*_*Man 7

如果你有一个int [],这Arrays.toString()是最简单的方法.