我有一个编程作业。它说我需要先反转字符串,然后将其改为大写,然后删除所有空格。我真的做了,但是我们的教授没有说任何关于使用 replaceAll()
方法。除此之外还有别的方法吗 replaceAll()
?
这是我的密码:
public static void main(String[] args) {
String line = "the quick brown fox";
String reverse = "";
for (int i = line.length() - 1; i >= 0; i--) {
reverse = reverse + line.charAt(i);
}
System.out.println(reverse.toUpperCase().replaceAll("\\s", ""));
}
8条答案
按热度按时间ktecyv1j1#
你可以用
String.codePoints
方法进行迭代int
此字符串的字符值,若要反转其顺序,请改为大写并删除空格:另请参阅:是否有方法反转多维数组中的特定数组?
hxzsmxv22#
即使不使用replaceall(),它仍然是一行:
eimct9ow3#
严格遵循教授的描述(和意图?):
注1:这可以通过一个循环来完成,但是这与描述不匹配(或者根本没有(用户)循环?)。
注2:使用
StringBuilder
不再需要它(当使用实际的java版本(>=11)时)-实际上我相信不使用它更有效,编译器做得更好(参见StringConcatFactory
)注3:如果允许使用
StringBuilder
,它还有一个reverse
方法注4:意识到(为了将来)
replaceAll()
与正则表达式一起工作,非常强大,但是有点过分了,只是替换了一个字符-replace()
会比较温和wmvff8tz4#
这里有两种方法。第一个使用标准循环。
印刷品
第二个利用
StringBuilder
以及replaceAll
. 不管怎样,你应该问问你的教授,因为没有什么是公开禁止的。同时打印
jaql4c8m5#
字符#是空白
初始化
StringBuilder
对象并遍历大写字符串的每个字符。迭代时,使用Character#isWhitespace
检查字符是否为空白字符。如果不是,则将字符附加到StringBuilder
对象。循环完成后StringBuilder
对象将包含除空白字符以外的所有字符。输出:
注:
如果你想转换
sb
到String
,使用sb.toString()
.你可以用
String
而不是StringBuilder
但我建议你用StringBuilder
而不是String
对于这种情况,因为循环中重复的字符串串联会创建String
作为串联数。查看此讨论以了解更多信息。ohtdti5x6#
如果不需要存储反转的行,也可以向后迭代并立即打印字符。
plupiseo7#
您可以使用
Character.isWhitespace
. 此外,通常最好使用StringBuilder
在循环内串联时。q3aa05258#
@克尔伍德的答案是密码: