【问题标题】:Java program to reverse words in a string [duplicate]Java程序反转字符串中的单词[重复]
【发布时间】:2020-04-07 13:59:08
【问题描述】:

无论输入中的单词之间有多少空格,我都希望每个单词之间的输出只有一个空格。但是在love和java之间的输出中的以下代码空间与输入空间相同。

public class Main {
    public static void main(String[] args) {
        String s = "I love       java programming.";

        String ss[] = s.split(" ");
        for (int i = ss.length - 1; i >= 0; i--) {
            System.out.print(ss[i] + " ");
        }
    }
}

输出:--

programming. java       love I 

【问题讨论】:

  • .split(" +").

标签: java string reverse


【解决方案1】:

我完全同意@Johannes Kuhn。

问题是,您传递给方法split 的过滤器只检测到单个空格。

这可以通过传递正确的正则表达式来检测multiple spacesdots 以及句子的结尾来轻松解决。

看看下面的实现:

public class Main {

    public static void main(String[] args) {
        String s = "I love       java programming.";

        String ss[] = s.split("[\\.| ]+");
        for (int i = ss.length - 1; i >= 0; i--) {
            System.out.print(ss[i] + " ");
        }
    }
}

PS:如果点对您来说不重要,您可以使用“[ ]+”。

【讨论】:

    【解决方案2】:

    使用 StringBuilder 和 Lambda 的小变化

    import java.util.Arrays;
    
    class Main {
    
      public static void main(String ... args) {
    
        var s = "I love     java programming";
        var r = new StringBuilder();
        var parts = s.split("\\s +");
        Arrays.asList(parts).forEach(r::append);
        System.out.println(r.reverse().toString());
    
      }
    }
    

    输出:gnimmargorp avajevol I

    Repl

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-09
      • 2016-02-19
      • 2010-11-03
      • 2011-11-07
      • 1970-01-01
      • 2013-04-01
      相关资源
      最近更新 更多