在不更改java中的空格的情况下反转字符串

时间:2014-01-17 00:42:25

标签: java regex string

我正在逐字逐句地反转字符串,并确保不更改或删除所有空格,制表符和空格字符等。我尝试使用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++[]。有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

+[]不是按字母顺序排列的,因此您对待它们的方式与处理空格的方式相同。 Character.isWhitespace可以帮助您解决问题。

答案 1 :(得分:2)

尝试更改

if (Character.isAlphabetic(ch)) {

if (!Character.isWhitespace(ch)) {

这样,您将包含所有不是空格的字符。否则,您只会反转[ ] +不符合的字母字符。