String.split不起作用

时间:2014-02-26 19:28:10

标签: regex string split

我试图分割一串单词,每个单词用“。”分隔。 我不知道我做错了什么:

@Override
        protected void onPostExecute(String result) {
            result = "order . war harmony . concord";
            result = result.replace("(noun)", "");
            result = result.replace("(antonym)", "");
            result = result.replace(":", "");
            result = result.replace("|", " . ");
            String[] separated = result.split(".");

            tv.setText(result + ": " + separated.length);
            super.onPostExecute(result);
        }

Yet sepa.length总是0!

2 个答案:

答案 0 :(得分:3)

句点(。)需要转义,因为String#split使用正则表达式。在正则表达式中,未转义的句号意味着任何字符:

String[] separated = result.split("\\.");

答案 1 :(得分:2)

java中的split方法需要regex参数,所以要注意正则表达式中的字符“。”意味着任何角色,所以你需要将它作为一个特殊角色处理。

因此您的代码可能如下所示:

@Override
protected void onPostExecute(String result) {
    result = "order . war harmony . concord";
    result = result.replace("(noun)", "");
    result = result.replace("(antonym)", "");
    result = result.replace(":", "");
    result = result.replace("|", " . ");
    // changed the splitting character "." to be regex "\\."
    String[] separated = result.split("\\.");
    tv.setText(result + ": " + separated.length);
    super.onPostExecute(result);
}