String.join无法按预期工作

时间:2016-06-03 12:04:14

标签: java string split

我目前正在使用yandex API开发转换器应用。由于某种原因,翻译的输出带有许多空格。例如,如果我将“始终忠实”翻译为拉丁语,则会显示" Semper fidelis "之类的结果。所以我想删除这些空格并将其显示为"Semper fidelis"所以我在下面写了代码(这是用昏迷写的,因为很清楚看到这个想法)

    public String modifyString(String tobeModify){
    String[] store =  tobeModify.split("\\s+");

    String output=null;

    if (store.length == 0){
        output = "";
    }else if (store.length == 1){
        output = store[0];
    }else {
        output = String.join(",", store);
    }

    return output;
}

但此产品输出如,Semper,fidelis。另外商店数组的长度为2,因为我打印它应该是空字符串。我想打印输出像“Semper,fidelis”(昏迷是为了演示目的)。我不知道这里有什么问题

2 个答案:

答案 0 :(得分:3)

使用String newStr = tobeModify.trim();

修剪功能将剪切前导空格和结束空格 请参阅:http://www.javatpoint.com/java-string-trim

答案 1 :(得分:1)

如果您收到以下输出",Semper,fidelis",则表示您的数组包含空元素""

["", "Semper", "fidelis"]

你应该丢弃数组中的空值:

Arrays.stream(store).filter(s -> !s.isEmpty()).toArray();

你可以写下你的方法:

public String modifyString(String s) {
    return s.trim().replaceAll("\\s+", ", ");
}