在Java中使用多个分隔符拆分字符串时出现不需要的元素

时间:2016-08-11 18:39:33

标签: java split

我有一个字符串,我需要删除所有提到的标点符号和空格。我的代码如下:

const Root = () => (
  <Provider store={store}>
    <Router
      history={browserHistory}
      routes={routes}
      onReadyStateChange={readyState => {
        console.log(99, readyState)
        if (!readyState.done) store.dispatch(toggleLoading(true))
        else store.dispatch(toggleLoading(false))
      }}
      render={applyRouterMiddleware(useRelay)}
      environment={Relay.Store}
    />
  </Provider>
)

但是,我得到一些空白的元素。输出是:

    String s = "s[film] fever(normal) curse;";
    String[] spart = s.split("[,/?:;\\[\\]\"{}()\\-_+*=|<>!`~@#$%^&\\s+]");
    System.out.println("spart[0]: " + spart[0]);
    System.out.println("spart[1]: " + spart[1]);
    System.out.println("spart[2]: " + spart[2]);
    System.out.println("spart[3]: " + spart[3]);
    System.out.println("spart[4]: " + spart[4]);

我想要的输出是:

spart[0]: s
spart[1]: film
spart[2]:
spart[3]: fever
spart[4]: normal

3 个答案:

答案 0 :(得分:2)

试试这个:

public static void main(String[] args) {
    String s = "s[film] fever(normal) curse;";
    String[] spart = s.split("[,/?:;\\[\\]\"{}()\\-_+*=|<>!`~@#$%^&\\s]+");
    for (String string : spart) {
        System.out.println("'"+string+"'");
    }
}

输出:

's'
'film'
'fever'
'normal'
'curse'

答案 1 :(得分:1)

我相信这是因为你在那里有一个Greedy quantifier的空间。我认为你也必须使用加号的转义序列。

答案 2 :(得分:1)

String spart = s.replaceAll( "\\W", " " ).split(" +");