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

EDIT: This was my original response, but in hindsight @iccthedral's answer is probably the best.

One approach would be to split the text into words, then just concatenate the first word to the end of everything that came after it.

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;

Another approach would be to use regular expressions. Match the first word, and everything else then use String.replaceAll to switch the two groups.

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 に答える