1

我是 Java 新手,我想知道如何在字符串中切换单词。在我的程序中,用户将文本输入字符串并保存。程序应该将第一个单词移动到字符串的末尾。前任。“我爱猫恨狗”应该改成“我爱猫恨狗”。

Scanner in = new Scanner(System.in);
System.out.println("Please enter at least one thing you love and one thing you hate using the words hate and love: ");
String loveHate = in.nextLine();
4

4 回答 4

6

应该让你开始......

一个例子...

int spaceIndex = loveHate.indexOf(" "); //index of a first space character
String first = loveHate.substring(0, spaceIndex);
String rest = loveHate.substring(spaceIndex + 1); 

String reversed = rest + " " + first; 
于 2012-09-26T22:53:48.067 回答
2

您可以使用以下正则表达式将第一个单词交换到末尾:

loveHate.replaceAll("(\\w+)(.*)", "$2 $1");
于 2012-09-26T22:53:51.107 回答
1

编辑:这是我最初的回答,但事后看来@iccthedral 的回答可能是最好的。

一种方法是将文本拆分为单词,然后将第一个单词连接到其后所有内容的末尾。

String input = "I love cats and hate dogs";
String[] words = input.split("\\s+");
String firstWord = words[0];
StringBuilder everythingAfterFirstWord = new StringBuilder();
for(int i = 1 ; i < words.length ; i++){
   String word = words[i];
   everythingAfterFirstWord.append(word);
   everythingAfterFirstWord.append(" ");
}
String switched = everythingAfterFirstWord + firstWord;

另一种方法是使用正则表达式。匹配第一个单词,然后其他所有内容都使用 String.replaceAll 来切换两组。

String switched = input.replaceAll("^(\\w+)\\s(.*)$", "$2 $1")
于 2012-09-26T22:51:25.047 回答
0
String ss = "i love you";
        String sss="";
        String temp="";
        String[] ssArr = ss.split("\\s");
        for(int i=0; i<ssArr.length; i++) {
            if(i==0) {
                temp = ssArr[i];
            }

            else {
                sss+=ssArr[i]+" ";
            }
             if(i==ssArr.length-1) {
                    sss+=temp;
                }
        }
        System.out.println(sss);

输出:我爱你

于 2012-09-26T22:59:58.217 回答