相当于Explode and Implode(PHP)的Java


93

我是Java新手,尽管在PHP方面有丰富的经验,并且正在寻找Java中爆炸和内爆(PHP中可用)函数的完美替代品。

我已经用Google搜索了相同的结果,但对结果不满意。任何人对我的问题都有好的解决方案将不胜感激。

例如:

String s = "x,y,z";
//Here I need a function to divide the string into an array based on a character.
array a = javaExplode(',', s);  //What is javaExplode?
System.out.println(Arrays.toString(a));

所需的输出:

[x, y, z]

3
好的,到目前为止您找到了什么解决方案?
康斯坦丁·约夫科夫

7
为什么这个问题被否决?和主题?请建议避免下一个问题。
Pankaj Wanjari 2013年

19
我认为,从观点来看,这个问题根本不是那么糟糕。我同意这是一个很奇怪的问题,但是我们许多PHP程序员只是用google搜索java,然后将其作为正确答案。
gorgi93

6
现在是2014年11月,我用Google搜索Java字符串爆炸,这个问题仍然是最主要的结果。我认为应该取消“关闭主题”状态,因为这对我来说根本不是主题。
陈李勇

3
2016年2月,此问题是“ java explode”的主要结果。
undefined

Answers:


139

用于StringJavadoc揭示String.split()了您正在寻找的东西explode

Java不包括等效的“连接”的“内爆”。您可能只想编写几行代码,而不是像其他答案所建议的那样为简单的函数包括巨大的外部依赖关系。有多种方法可以完成该任务。使用a StringBuilder是一个:

String foo = "This,that,other";
String[] split = foo.split(",");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < split.length; i++) {
    sb.append(split[i]);
    if (i != split.length - 1) {
        sb.append(" ");
    }
}
String joined = sb.toString();

谢谢你们的回答。
Pankaj Wanjari

1
Split确实确实使用了正则表达式(在PHP,Perl,Java等中)。如果要拆分另一个符号,则需要对其进行转义,如下所示:String [] split = foo.split(“ \\(”);
HoldOffHunger

2
请注意,从Java 8开始,我们实际上有了String#joindocumentation)。例如:String joined = String.join(" ", split);。该方法使用StringJoiner该类。
Zabuzard

24

String.split() 可以为您提供替代 explode()

要替换implode()我,建议您编写自定义函数或使用Apache CommonsStringUtils.join()函数。


16

String.split和StringUtils.join方法是不错的选择。

爆炸:

String[] exploded="Hello World".split(" ");

放大:

String imploded=StringUtils.join(new String[] {"Hello", "World"}, " ");

请记住,尽管StringUtils在外部库中。


1
您在哪里找到StringUtils?我在com.sun.internal和com.sun.deploy中找到了该类,但我认为直接在com.sun下使用类不是一个好主意packages such as sun., that are outside of the Java platform, can be different across OS platforms (Solaris, Windows, Linux, Macintosh, etc.) and can change at any time without notice with SDK versions
Arnaud Denoyelle 2013年

好的,在您完成编辑后,我看到该类来自外部库
Arnaud Denoyelle

...这是Appache Commons(我想):StringUtils
crusy


4

我不熟悉PHP,但我认为String.split与Java等效于Java explode。至于implode,standart库不提供这样的功能。您只需遍历数组并使用StringBuilder / StringBuffer构建字符串。或者,您可以尝试出色的Google Guava SplitterJoinerApache Commons StringUtils的split/join方法。


1
除Guava外,所有链接均有效,因为3年过去了,它们已移至GitHub。我已使用新链接更新了评论。
伊万·萨拉梅特

0

如果您在String Class的参考中进行讨论。所以你可以使用

subString /分割

用于爆炸和使用弦乐

连接

对于Implode。


1
concate不等同于implode
理查德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.