我们知道String.split(String regex)
返回一个String[]
. 那么,我们如何通过使用返回String[]
的和正则表达式(或需要更多输入)来恢复字符串?
看起来如果正则表达式是一个常数,例如,我们可以通过依次
\t
附加 和常数的每个成员的关节来恢复原始字符串。String[]
但是,如果正则表达式是某事怎么办。喜欢[AB]+
?如果有可以处理上述两种情况的全方位方式(功能)?
我们知道String.split(String regex)
返回一个String[]
. 那么,我们如何通过使用返回String[]
的和正则表达式(或需要更多输入)来恢复字符串?
看起来如果正则表达式是一个常数,例如,我们可以通过依次\t
附加 和常数的每个成员的关节来恢复原始字符串。String[]
但是,如果正则表达式是某事怎么办。喜欢[AB]+
?
如果有可以处理上述两种情况的全方位方式(功能)?
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, ":#:"));
}
}
你不能,除非正则表达式是文字,即使那样它也不是 100% 可靠的。
原因是匹配的分隔符被丢弃,所以一个非文字的正则表达式,例如
\s+ (any number if whitespace characters)
无法重建,因为我们不知道最初存在多少以及什么类型的空白字符。
如果正则表达式是文字,您可以通过在元素拆分之间插入文字来简单地重建字符串,但不能忽略尾随空格,这两个输入:
a,b,c
a,b,c,,,,,
当","
两者分割时产生相同的结果[a, b, c]
,因此即使使用文字正则表达式,您也无法自信地重新创建原始输入。