Java - 将数组转换为句子

时间:2015-11-18 12:53:18

标签: java arrays string

我有以下方法:

public static void sentence(String sen)
{

    String[] array = sen.split(" ");
    String[] five = Arrays.copyOfRange(Array, 0, 5);

    if (Array.length < 6)
        System.out.println(sen);
    else
        System.out.print(Arrays.toString(five));
}

作为一个论点,我输入一个句子。如果句子超过5个单词,我只想打印出前5个单词。当发生&gt;时,打印输出会发生什么? 5看起来像:

[word1,word2,word3,word4,word5]

我希望它看起来像是:

word1 word2 word3 word4 word5

关于如何将数组转换为正常句子格式的任何建议,如后一示例所示?

5 个答案:

答案 0 :(得分:5)

如果您使用的是Java 8,则可以使用String.join String.join:

public static void sentence(String sen) {
    String[] array = sen.split(" ");
    String[] five = Arrays.copyOfRange(Array, 0, 5);

    if (Array.length < 6)
        System.out.println(sen);
    else
        System.out.print(String.join(" ",five));
}

答案 1 :(得分:2)

从您提出问题的方式来看,似乎您的问题在于加入这些词语。你可以看一下这个问题:https://stackoverflow.com/a/22474764/967748
这里的其他答案也有效。

需要注意的一些小事:

要稍微优化,您可以将limit参数添加到String.split。所以你会有

String[] array = sen.split(" ", 6); //five words + "all the rest" string

通过将String[] five = ...语句放在if中,您还可以避免不必要的复制。 (或完全删除该逻辑)

ps:我认为if声明中的警卫应该是小写array

答案 2 :(得分:1)

您可以使用此方法:

String sentence = TextUtils.join(" ", five);

答案 3 :(得分:1)

另一种解决方案,首先避开.split()(和.join()

String res = "";
Scanner sc = new Scanner(sen); //Default delimiter is " "
int i = 0;
while(sc.hasNext() && i<5){
    res += sc.next();
    i++;
}
System.out.println(res);
为了性能原因,可以将res替换为字符串构建器,但我不记得确切的语法

答案 4 :(得分:0)

尝试StringUtils

System.out.println(StringUtils.join(five, " "));