【问题标题】:Java - convert array to sentenceJava - 将数组转换为句子
【发布时间】:2015-11-18 12:53:17
【问题描述】:

我有以下方法:

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 个单词。发生的情况是 sen > 5 时的打印输出如下所示:

[word1,word2,word3,word4,word5]

我希望它看起来像:

word1word2word3word4word5

关于如何将数组转换为后一个示例中的普通句子格式的任何建议?

【问题讨论】:

    标签: java arrays string


    【解决方案1】:

    如果你使用的是Java 8,你可以使用String.joinString.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));
    }
    

    【讨论】:

    • 如果只需要前五个,为什么要全部拆分和加入?如果数组很长怎么办?
    【解决方案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

    【讨论】:

      【解决方案3】:

      你可以使用这个方法:

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

      【讨论】:

      • 如果不导入必要的库,他就无法使用它。你应该提到这一点。
      【解决方案4】:

      另一种解决方案,首先避免使用.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 可以替换为字符串生成器以获得性能原因,但我不记得确切的语法

      【讨论】:

        【解决方案5】:

        试试StringUtils

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

        【讨论】:

          猜你喜欢
          • 2010-10-11
          • 2011-11-22
          • 2014-04-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-03-20
          • 1970-01-01
          • 2012-07-17
          相关资源
          最近更新 更多