【问题标题】:How to split a String in Java with multiple delimiters utilizing a delimiter array? [duplicate]如何使用分隔符数组在 Java 中使用多个分隔符拆分字符串? [复制]
【发布时间】:2017-07-03 11:41:19
【问题描述】:

我想要做的是获取一个 input_string,以及一个 char[] 分隔符,然后使用该 char[] 中的所有分隔符拆分该 input_string。

这是我到目前为止的代码,但我还没有找到在 split 函数中使用 char[] 的方法。如果这不可能,那么我意识到我可以让某人为定界符创建一个正则表达式,但这意味着尽可能简单地更改任何内容,因此添加额外的定界符就像将其添加到定界符一样简单大批。

public String[] stringSplit(char[] delimiters, String input_words) {
    String[] input_words_split = null;
    input_words_split = input_words.split(delimiters[0]);

    return input_words_split;

}

【问题讨论】:

  • 问题是什么?
  • String splitRegex = Arrays.stream(new String(delimiters).split("")).map(Pattern::quote).collect(Collectors.joining("|")); return input_words.split(splitRegex);
  • @shmosel,太好了。
  • 这样做要简单得多:input_words_split = input_words.split("[" + String.valueOf(delimiters) + "]");
  • @neildo 这对于特殊字符会失败。

标签: java string


【解决方案1】:

以递归方式:

 private static void split(String input, String[] separators, int index, List<String> output) {
        if(index == separators.length) {

            output.add(input);

        } else {
            final String separator = separators[index];

            for (String s : input.split(separator)) {
                split(s, separators, index + 1, output);
            }

        }
    }

如何使用:

public static void main(String[] args) {

        String input = "te,st;rr;a,e";
        String[] separators = {",", ";"};

        List<String> output = new ArrayList<>();

        split(input, separators, 0, output);

        System.out.println(output);
    }

输出:

[te, st, rr, a, e]

【讨论】:

  • 问题结束后如何发布?
  • 我认为它是在问题结束之前发布的。
  • 20 分钟后发布。
  • 嗯,我不太确定:o
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-24
  • 2012-09-04
  • 1970-01-01
  • 2012-02-14
  • 2018-02-27
相关资源
最近更新 更多