Java 如何在列表中存储的多个分隔符上拆分字符串?

Java 如何在列表中存储的多个分隔符上拆分字符串?,java,Java,我有一个分隔符列表,如 List<String> delimiters= Arrays.asList(",","."); List delimiters=Arrays.asList(“,”,”); 如果我有一个像“a.b,c”这样的字符串 如何拆分所有分隔符?您可以先对字符串使用replaceAll,然后将其全部转换为固定分隔符(由您选择),如下所示-然后您可以基于该分隔符拆分: String[] newArray = stringArray.replaceAll("[\\.]"

我有一个分隔符列表,如

List<String> delimiters= Arrays.asList(",",".");
List delimiters=Arrays.asList(“,”,”);
如果我有一个像
“a.b,c”
这样的字符串


如何拆分所有分隔符?

您可以先对字符串使用replaceAll,然后将其全部转换为固定分隔符(由您选择),如下所示-然后您可以基于该分隔符拆分:

String[] newArray = stringArray.replaceAll("[\\.]", ",").split(",");

你可以做一个正则表达式

@Test
public void test() {
    List<String> delimiters = Arrays.asList(",", ".", "?");
    String str = "a.b,c?dr";

    StringBuilder regex = new StringBuilder();
    regex.append("[");
    delimiters.stream().forEach(delimiter -> regex.append(delimiter + "/"));
    regex.append("]");

    String[] result = str.split(regex.toString());
}
@测试
公开无效测试(){
列表分隔符=数组。asList(“,”,“,?”);
String str=“a.b,c?dr”;
StringBuilder正则表达式=新的StringBuilder();
regex.append(“[”);
delimiters.stream().forEach(delimiter->regex.append(delimiter+“/”);
regex.append(“]”);
字符串[]结果=str.split(regex.toString());
}

请检查以下代码是否解决了您的问题:

List<String> delimiters = Arrays.asList(",", ".", "?", ":");

for (String delimiter : delimiters) {
  text = text.replace(delimiter, " "); //replace all delimiter occurrence with space
}

String[] output = text.split(" "); //split using space
List delimiters=Arrays.asList(“,”,“?”,“:”);
for(字符串分隔符:分隔符){
text=text.replace(分隔符“”);//将所有出现的分隔符替换为空格
}
字符串[]输出=text.split(“”)//使用空格分割
这个怎么样?使用“|”分隔多个分隔符,请记住添加[],否则需要对其进行转义

以下是代码:

import java.util.Arrays;
import java.util.List;

public class StringSplitMultipleDelimeter {

    public static void main(String[] args) {
        List<String> delimiters= Arrays.asList(",",".","!","?","$","&","^","%","@");
        String givenString = "Test,String.with?Multiple@delimeters!example";
        //Create Regex to split sting
        StringBuilder regex = new StringBuilder();
        regex.append("[");
        delimiters.forEach(delimeter -> regex.append(delimeter));
        regex.append("]");
        String[] tokens = givenString.split(regex.toString());
        System.out.println("Number of tokens = " + tokens.length);
        for(int i =0; i<tokens.length; i++) {
            System.out.println(tokens[i]);
        }
    }
}
导入java.util.array;
导入java.util.List;
公共级多重测线仪{
公共静态void main(字符串[]args){
列表分隔符=数组;
String givenString=“Test,String.with?”?Multiple@delimeters“!示例”;
//创建正则表达式以拆分sting
StringBuilder正则表达式=新的StringBuilder();
regex.append(“[”);
分隔符.forEach(delimeter->regex.append(delimeter));
regex.append(“]”);
String[]tokens=givenString.split(regex.toString());
System.out.println(“令牌数=“+tokens.length”);

对于(int i=0;iNitpicking,但不需要将
转换为
。此外,
也不需要转义。当您硬编码分隔符而不是使用
分隔符
列表时,您缺少问题的一个重要部分。列表中可能有更多分隔符您缺少一个重要的当您硬编码分隔符而不是使用
分隔符
列表时,这是问题的一个重要部分请注意,这不包括包含多个字符的分隔符。您的意思可能是
而不是
/
?如果列表中的字符串包含空格,则此操作将失败。更好的方法是:用已知的d替换elimiter,例如分隔符.get(0),而不是空格
import java.util.Arrays;
import java.util.List;

public class StringSplitMultipleDelimeter {

    public static void main(String[] args) {
        List<String> delimiters= Arrays.asList(",",".","!","?","$","&","^","%","@");
        String givenString = "Test,String.with?Multiple@delimeters!example";
        //Create Regex to split sting
        StringBuilder regex = new StringBuilder();
        regex.append("[");
        delimiters.forEach(delimeter -> regex.append(delimeter));
        regex.append("]");
        String[] tokens = givenString.split(regex.toString());
        System.out.println("Number of tokens = " + tokens.length);
        for(int i =0; i<tokens.length; i++) {
            System.out.println(tokens[i]);
        }
    }
}