字符串的单词reversion

时间:2014-09-08 09:24:51

标签: java string

我想要反转字符串中的单词。我试着像那样实现它:

public String reverseWords(String str) {
    String reverse = "";
    String[] arr = str.split(" ");
    for (int i = arr.length; i < 0; i++) {
        reverse+=arr[i];
    }       
    return reverse;
}

然而,这不会给我任何回报?我有什么建议吗?

6 个答案:

答案 0 :(得分:3)

你必须向后循环迭代。使用--并且您不需要从0 to length开始,而是从length转到1。它是手动反转功能的主要逻辑。

试试这个:

public static String reverseWords(String str) {
    StringBuilder sb = new StringBuilder(str.length() + 1);
    String[] words = str.split(" ");
    for (int i = words.length - 1; i >= 0; i--) {
        sb.append(words[i]).append(' ');
    }
    sb.setLength(sb.length() - 1);  // Strip trailing space
    return sb.toString();
}

答案 1 :(得分:3)

尝试i=0arr.lengthi--i>=0

或者更详细一点:

你想要

for (int i=arr.length-1 ; i>=0 ;i--)

答案 2 :(得分:2)

你有: for (int i = arr.length; i < 0; i++) {

如果是长度,我将总是大于或等于0 试试这个: for (int i = arr.length; i > 0; i--) {

答案 3 :(得分:2)

如果你想使用循环。

版本1:

public String reverseWords(String str) {
    String reverse = "";
    for (int i = str.length()-1; i >= 0; i--) {
        reverse+=str.charAt(i);
    }       
    return reverse;
}

版本2:

 public String reverseWords(String str) {
StringBuilder sb = new StringBuilder(str.length()+1);
        for (int i = str.length()-1; i >= 0; i--) {
            sb.append(str.charAt(i));
        }       
        return sb.toString();
    }

答案 4 :(得分:1)

如果字符串具有很大的长度,而且如果你处于多线程环境中,建议使用StringBuffer而不是StringBuilder。

public  String reverseWords(String str) {
          return new StringBuffer(str).reverse().toString();
       }

答案 5 :(得分:0)

我给出了另一个反转字符串的选项,即在java中使用charArray。 1.使用函数将所有字符串复制到char数组 2.只需按相反的顺序打印字符。