Java程序将字符串中的单词反向[重复]

问题描述 投票:1回答:2
无论输入的单词之间有多少空格,我都希望每个单词之间的输出中只有一个空格。但是在后面的代码中,在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

java string reverse
2个回答
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:如果点对您不重要,则可以使用“ [] +”。


0
投票
使用StringBuilder和Lambdas的小变化

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

© www.soinside.com 2019 - 2024. All rights reserved.