String.split在最后一个索引上导致换行

时间:2015-07-18 20:59:24

标签: java string

当我分割我的字符串时,我在最后一个索引后得到一个换行符,是否有人知道是什么导致了这个?

代码:

String string = "1234324:Kalle"

public void splitString(String string){
    if (string.contains(":")) {
        String[] parts = string.split(":");
        returnedId = parts[0];
        returnedUserName = parts[1];
        System.out.println(returnedUserName + " this gets printed on a new line");
    } else {
        throw new IllegalArgumentException("String " + string + " does not contain :");
    }
}

这会导致我的用户界面出现一些不需要的问题,无论如何我可以解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

在拆分之前添加:

    "settings" : {
    "analysis" : {
        "filter" : {
            "nGram_filter": {
                "type": "shingle",
                "max_shingle_size": 5,
                "min_shingle_size": 2,
                "output_unigrams":"true"
            }
        },
        "analyzer" : {
            "my_ngram_analyzer" :{
                "tokenizer" : "standard",
                "filter" : [
                    "lowercase",
                    "nGram_filter"
                ]
            }
        }
    }
}

这将删除任何CRLF或TAB ASCII字符。

答案 1 :(得分:1)

为什么要这样做?

输入中的冒号后面几乎肯定有换行符。

我该如何解决?

String.split(String)采用正则表达式。您可以消耗(可选)冒号周围的空白区域,例如

String[] parts = string.split("\\s*:\\s*");