2

我们知道String.split(String regex)返回一个String[]. 那么,我们如何通过使用返回String[]的和正则表达式(或需要更多输入)来恢复字符串?

  1. 看起来如果正则表达式是一个常数,例如,我们可以通过依次\t附加 和常数的每个成员的关节来恢复原始字符串。String[]但是,如果正则表达式是某事怎么办。喜欢[AB]+

  2. 如果有可以处理上述两种情况的全方位方式(功能)?

4

2 回答 2

0

JDK 中没有可以做到这一点的方法,但是您可以使用Apache Commons Langs StringUtls类,它会起作用

import org.apache.commons.lang3.StringUtils;

/**
 *
 * @author Himanshu Mishra
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        String orignalStr = "AB:#:CD:#:EF";
        String[] orignalSplit = orignalStr.split(":#:");


        // Join all Strings in the Array into a Single String, separated by :#:

        System.out.println("Join Strings using separator " + StringUtils.join(orignalSplit, ":#:"));
    }
}
于 2013-04-27T08:20:49.027 回答
0

你不能,除非正则表达式是文字,即使那样它也不是 100% 可靠的。

原因是匹配的分隔符被丢弃,所以一个非文字的正则表达式,例如

 \s+ (any number if whitespace characters)

无法重建,因为我们不知道最初存在多少以及什么类型的空白字符。

如果正则表达式是文字,您可以通过在元素拆分之间插入文字来简单地重建字符串,但不能忽略尾随空格,这两个输入:

a,b,c
a,b,c,,,,,

","两者分割时产生相同的结果[a, b, c],因此即使使用文字正则表达式,您也无法自信地重新创建原始输入。

于 2013-04-27T08:29:30.190 回答