2012-09-26 52 views
1

我是Java新手,想知道如何切換字符串中的單詞。在我的程序中,用戶將文本輸入到字符串中並保存。程序應該將第一個單詞移到字符串的末尾。防爆。 「我喜歡貓和討厭的狗」應該改爲「愛貓和討厭的狗」。字符串操作中的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(); 
+1

您可以將字符串拆分爲空格分隔符,然後將數組中的第一個元素彈出到結尾。 – Vulcan

回答

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") 
6

This應該讓你開始...

一個例子...

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; 
+0

+1對於這種簡單的情況,正則表達式比兩個子字符串調用矯枉過正,效率更低。 – wolfcastle

+0

@wolfcastle我也這麼認爲。 – nullpotent

+0

我相信其餘的應該是:'loveHate.substring(spaceIndex + 1);'因爲我不認爲他想要第一個和第二個單詞之間的空間。 – ggreiner

2

你可以第一個字與此正則表達式換到最後:

loveHate.replaceAll("(\\w+)(.*)", "$2 $1"); 
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); 

輸出:love y ou我