Java 字符串拆分&;参加
我有一组字符串。我需要能够将此集合中的项目加入到一个字符串中,然后向后拆分该字符串并获得原始字符串集合。 当然,我需要为联接/拆分操作引入一个分隔符。鉴于原始字符串可以包含任何字符,我还需要处理分隔符转义。我的问题很简单——是否有一个Java类/库可以为我提供开箱即用的功能?比如:Java 字符串拆分&;参加,java,Java,我有一组字符串。我需要能够将此集合中的项目加入到一个字符串中,然后向后拆分该字符串并获得原始字符串集合。 当然,我需要为联接/拆分操作引入一个分隔符。鉴于原始字符串可以包含任何字符,我还需要处理分隔符转义。我的问题很简单——是否有一个Java类/库可以为我提供开箱即用的功能?比如: String join(String[] source, String delimiter, String escape); String[] split(String source, String delimite
String join(String[] source, String delimiter, String escape);
String[] split(String source, String delimiter, String escape);
或类似情况,无需手动操作?无需脱离部件,有:
和StringUtils.split(..)
fromStringUtils.join(..)
和Joiner
来自Splitter
String.split
将regex模式作为参数(delimeter),并返回字符串[]
作为结果。拆分和联接转义分隔符:
@NonNull
public static String joinEscaping(char separator, String... aa) {
String escape = separator != '\\' ? "\\" : "#";
StringBuilder result = new StringBuilder();
for (int i = 0; i < aa.length; i++) {
String a = aa[i];
a = (a == null) ? "" : a;
a = a.replace(escape, escape + escape);
a = a.replace(separator + "", escape + separator);
result.append(a);
if (i + 1 < aa.length) {
result.append(separator);
}
}
return result.toString();
}
public static List<String> splitUnescaping(char separator, @NonNull String str) {
char escape = separator != '\\' ? '\\' : '#';
List<String> result = new ArrayList<>();
int yourAreHere = 0;
boolean newPart = true;
while (true) {
int sep = str.indexOf(separator, yourAreHere);
int exc = str.indexOf(escape, yourAreHere);
if (sep == -1 && exc == -1) { // last part
add(result, str.substring(yourAreHere), newPart);
break;
}
if (sep == -1 && exc + 1 == str.length()) { // ghost escape
add(result, str.substring(yourAreHere, exc), newPart);
break;
}
if (exc == -1 || (sep != -1 && sep < exc)) {
add(result, str.substring(yourAreHere, sep), newPart);
yourAreHere = sep + 1;
newPart = true;
} else {
char next = str.charAt(exc + 1);
add(result, str.substring(yourAreHere, exc) + next, newPart);
yourAreHere = exc + 2;
newPart = false;
}
}
return result;
}
private static void add(List<String> result, String part, boolean newPart) {
if (newPart) {
result.add(part);
} else {
int last = result.size() - 1;
result.set(last, result.get(last) + part);
}
}
@NonNull
公共静态字符串joinEscaping(字符分隔符、字符串…aa){
字符串转义=分隔符!='\\'?“\\\”:“\\”;
StringBuilder结果=新建StringBuilder();
对于(int i=0;i
展示您尝试过的东西。顺便说一句,join和split总是有可能您的
是输入字符串中的一个(或部分)。好吧,到目前为止建议的解决方案都不支持转义。好吧,我很好奇。你为什么要把一根绳子连起来,然后把它分开?听起来你还需要别的东西!