反转整个String并反转其中的每个单词

时间:2015-02-13 14:17:12

标签: java methods

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

I love you变为uoy evol I

而另一个类反转字符串而不改变位置,例如

I love you变为I evol uoy

我有一个小代码,但是如果在这些类中调用方法,我就无法找到方法。

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

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"
    }
}

2 个答案:

答案 0 :(得分:7)

我不会向您展示完整的解决方案,但会指导您,这是实现这一目标的唯一方法:

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

还有更多解决方案,请访问String API并为您的创意火力加油!

答案 1 :(得分:5)

你可以在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