拆分字符串并修剪每个元素

Som*_*omu 36 java

是否有任何库API或正则表达式模式在一些分隔符上拆分String并自动修剪每个元素的前导和尾随空格而不必循环元素?

例如,在分割" A B # C#D# E # "#期望的输出是[A B,C,D,E]

我得到的最接近的是str.split("\\s*#\\s*")给出的[ A B, C, D, E]

Gar*_*all 45

在拆分之前修剪它

" A B # C#D# E # ".trim().split("\\s*#\\s*")
Run Code Online (Sandbox Code Playgroud)

逗号后的空格[ A B, C, D, E]就是Arrays.toString打印方式

  • 这个答案没问题.但我喜欢正则表达式,如`.split(/\s*#\ s*/)`. (3认同)

Ste*_*e J 11

番石榴救援!使用CharMatcherSplitter.我只使用Joiner将Iterable拼接在一起,清楚地表明迭代只有字母,没有填充,无关的空格或哈希符号.

package main;

import com.google.common.base.CharMatcher;
import com.google.common.base.Joiner;
import com.google.common.base.Splitter;

public class TestMain {

    static Splitter split = Splitter.on(CharMatcher.anyOf(" #")).trimResults()
            .omitEmptyStrings();
    static Joiner join = Joiner.on(", ");

    public static void main(String[] args) {
        final String test = " A B # C#D# E # ";
        System.out.println(join.join(split.split(test)));
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

A, B, C, D, E
Run Code Online (Sandbox Code Playgroud)

非常适合那些因正则表达而头疼的人.