我正在逐字逐句地反转字符串,并确保不更改或删除所有空格,制表符和空格字符等。我尝试使用Java的解决方案很少,但结果却没有好结果。例如,要转换以下字符串
The rule about++[] the input
stream.
在不删除任何空格字符的情况下获得这样的输出。
ehT elur tuoba++[] eht tupni
maerts.
我的代码
String reverseString(String str) {
StringBuilder temp = new StringBuilder();
StringBuilder result = new StringBuilder();
for (char ch : str.toCharArray()) {
if (Character.isAlphabetic(ch)) {
temp.append(ch);
} else {
result.append(temp.reverse()).append(ch);
temp.delete(0, temp.length());
}
}
result.append(temp);
return result.toString();
}
我得到的结果与单词about++[]
的一个问题相同,应该是][++tuoba0
它显示为tuoba++[]
。有什么方法可以解决这个问题吗?
答案 0 :(得分:2)
+
和[]
不是按字母顺序排列的,因此您对待它们的方式与处理空格的方式相同。 Character.isWhitespace
可以帮助您解决问题。
答案 1 :(得分:2)
尝试更改
if (Character.isAlphabetic(ch)) {
到
if (!Character.isWhitespace(ch)) {
这样,您将包含所有不是空格的字符。否则,您只会反转[
]
+
不符合的字母字符。