Java相当于Explode和Implode(PHP)[关闭]

Posted

技术标签:

【中文标题】Java相当于Explode和Implode(PHP)[关闭]【英文标题】:Java equivalent to Explode and Implode(PHP) [closed] 【发布时间】:2013-05-22 08:02:43 【问题描述】:

我是 Java 新手,虽然在 php 方面有很好的经验,但我正在寻找 Java 中的 explode 和 implode(PHP 中可用)函数的完美替代品。

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

例如:

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]

【问题讨论】:

好的,到目前为止你找到了哪些解决方案? 为什么这个问题被否决了?和题外话??请建议避免下一个问题。 我认为根据观看次数,这个问题一点也不差。我同意这是一个奇怪的问题,但是我们很多 PHP 程序员只是在谷歌上搜索 Java,然后将其作为正确答案。 现在是 2014 年 11 月,我用谷歌搜索了 java string explode,这个问题仍然是最高的结果。我认为应该取消“关闭为题外话”的状态,因为这对我来说根本不是题外话。 2016 年 2 月,这个问题是“java explode”的主要结果。 【参考方案1】:

我不熟悉 PHP,但我认为 String.split 是 Java 等价于 PHP explode。至于implode,标准库不提供这样的功能。您只需遍历数组并使用StringBuilder/StringBuffer 构建字符串。或者你可以尝试Google GuavaSplitter和Joiner或split/join来自Apache CommonsStringUtils的优秀方法。

【讨论】:

所有链接都有效,除了 Guava,因为 3 年过去了,他们搬到了 GitHub。我已经用新链接更新了评论。【参考方案2】:

Javadoc for String 表明 String.split() 是您正在寻找的与 explode 相关的内容。

Java 不包含等效于“join”的“implode”。您可能只想编写几行代码,而不是像其他答案所建议的那样为一个简单的函数包含一个巨大的外部依赖项。有很多方法可以做到这一点;使用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();

【讨论】:

谢谢你们所有的回答。 Split 确实使用了正则表达式(在 PHP、Perl、Java 等中)。如果要在另一个符号上拆分,则需要对其进行转义,如下所示: String[] split = foo.split("\\("); 请注意,从 Java 8 开始,我们实际上有 String#join (documentation)。例如:String joined = String.join(" ", split);。该方法使用StringJoiner 类。【参考方案3】:

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

对于implode() 的替换,我建议您编写自定义函数或使用Apache Commons 的StringUtils.join() 函数。

【讨论】:

【参考方案4】:

好的替代方法是 String.split 和 StringUtils.join 方法。

爆炸:

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

内爆:

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

请记住,StringUtils 位于外部库中。

【讨论】:

在哪里可以找到 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 好的,经过你的编辑,我看到这个类来自一个外部库 ...这是Appache Commons(我猜):StringUtils【参考方案5】:

java.lang.String.split(String regex) 就是你要找的。​​p>

【讨论】:

【参考方案6】:

如果您在 String Class 的引用中谈论。所以你可以使用

子字符串/拆分

用于爆炸和使用字符串

串联

用于内爆。

【讨论】:

concate 不等同于implode

以上是关于Java相当于Explode和Implode(PHP)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

PHP中implode()和explode()

php的explode()和implode()方法

PHP中explode和implode的区别

explode and implode

在c#中替代php的explode/implode-functions

PHP implode() 函数由数组合并字符串