反转整个字符串并反转其中的每个单词

Reversing the whole String and reversing each word in it

我必须编写一个包含两个 classes 的代码,一个反转字符串改变位置,例如

I love you 变为 uoy evol I

和另一个 class 在不改变位置的情况下反转字符串,例如

I love you 变为 I evol uoy

我有一个小代码,但如果调用那些 classes 中的方法,我无法找到方法。

我现在只有第一种方式反转字符串的代码。欢迎任何帮助。

class StringReverse2{
    public static void main(String[] args){

        String string="I love you";
        String reverse = new StringBuffer(string).  //The object created through StringBuffer is stored in the heap and therefore can be modified
        reverse().toString();                       //Here the string is reversed

        System.out.println("Old String:"+string);   //Prints out I love you
        System.out.println("New String : "+reverse);//Prints out the reverse  that is "uoy evol I"
    }
}

我不会向您展示完整的解决方案,但会指导您,这是一种方法:

  • split String 根据空格(yourString.split("\s+");)
  • 迭代结果数组并反转每个字符串(您可以使用与第一个任务相同的方法)
  • 从数组构造一个新字符串

还有更多解决方案,请访问 String API 并激发您的创意!

您可以只对 StringBuilder 对象使用 reverse() 方法

public class Testf {
   public static void main(String[] args){

        String string="I love you";
        String reverse = new StringBuilder(string).reverse().toString();    

        StringBuilder secondReverse = new StringBuilder();
        for (String eachWord : string.split("\s+")){
            String reversedWord = new StringBuilder(eachWord).reverse().toString();
            secondReverse.append(reversedWord);
            secondReverse.append(" ");

        }

        System.out.println("Old String:"+string);   //Prints out I love you
        System.out.println("New String : "+reverse);//Prints out the reverse  that is "uoy evol I"
        System.out.println("Reversed word two: " + secondReverse.toString());
    }
}

API: http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html