'How to find the last word in a string

I'm trying to create a method that returns the last word in a string but I am having some trouble writing it.

I am trying to do it by finding the last blank space in the string and using a substring to find the word. This is what I have so far:

    String strSpace=" ";
    int Temp; //the index of the last space
    for(int i=str.length()-1; i>0; i--){
        if(strSpace.indexOf(str.charAt(i))>=0){
            //some code in between that I not sure how to write
        }
    }
}

I am just beginning in Java so I don't know many of the complicated parts of the language. It would be much appreciated if someone could help me find a simple way to solve this problem. Thanks!



Solution 1:[1]

String#lastIndexOf and String#substring are your friends here.

chars in Java can be directly converted to ints, which we'll use to find the last space. Then we'll simply substring from there.

String phrase = "The last word of this sentence is stackoverflow";
System.out.println(phrase.substring(phrase.lastIndexOf(' ')));

This prints the space character itself too. To get rid of that, we just increment the index at which we substring by one.

String phrase = "The last word of this sentence is stackoverflow";
System.out.println(phrase.substring(1 + phrase.lastIndexOf(' ')));

If you don't want to use String#lastIndexOf, you can loop through the string and substring it at every space until you don't have any left.

String phrase = "The last word of this sentence is stackoverflow";
String subPhrase = phrase;
while(true) {
    String temp = subPhrase.substring(1 + subPhrase.indexOf(" "));
    if(temp.equals(subPhrase)) {
        break;
    } else {
        subPhrase = temp;
    }
}
System.out.println(subPhrase);

Solution 2:[2]

You can do this:

String[] words = originalStr.split(" ");  // uses an array
String lastWord = words[words.length - 1];

and you've got your last word.

You are splitting the original string at every space and storing the substrings in an array using the String#split method.

Once you have the array, you are retrieving the last element by taking the value at the last array index (found by taking array length and subtracting 1, since array indices begin at 0).

Solution 3:[3]

String str =  "Code Wines";
String lastWord = str.substring(str.lastIndexOf(" ")+1);
System.out.print(lastWord);

Output:

Wines

Solution 4:[4]

You can use: (if you are not familiar with arrays or unusual methods)

     public static String lastWord(String a) // only use static if it's in the 
   main class
     { 
       String lastWord = ""; 

    // below is a new String which is the String without spaces at the ends
    String x = a.trim(); 


    for (int i=0; i< x.length(); i++) 
    { 
        if (x.charAt(i)==' ') 
            lastWord = x.substring(i); 

    } 

    return lastWord; 
}  

Solution 5:[5]

you just need to traverse the input string from tail when first find blank char stop traverse work and return the word.a simple code like this:

public static String lastWord(String inputs) {
    boolean beforWords = false;
    StringBuilder sb = new StringBuilder();
    for (int i = inputs.length() - 1; i >= 0; i--) {
        if (inputs.charAt(i) != ' ') {
            sb.append(inputs.charAt(i));
            beforWords = true;
        } else if (beforWords){
            break;
        }
    }
    return sb.reverse().toString();
}

Solution 6:[6]

You could try:

System.out.println("Last word of the sentence is : " + string.substring (string.lastIndexOf (' '), string.length()));

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 RaminS
Solution 3 Code Wines
Solution 4
Solution 5
Solution 6 vs97