javascript

Reversing a string


I want to reverse a string, then I want to reverse each word in it. I was able to reverse the string. But couldn't reverse words in it.

Given Str = "how are you" Expected Result = "you are how"

My code var my_str="how are you"; alert(my_str.split('').reverse().join(''));

Result I get: uoy era woh

How to get the final result??


Solution

  • the other answers are entirely correct if your string has only 1 space between words.

    if you have multiple spaces between words, then things are a bit different: to get just the words, in reverse order, rejoined by 1 space:

    str.split(/\s+/).reverse().join(" ")
    

    to reverse the entire string, and still have the original whitespace:

    str.split(/\b/).reverse().join('')
    

    the first one uses a regex, "/\s+/", to match an entire run of spaces, instead of a single space. it rejoins the words with a single space.

    the second one uses a regex, "/\b/", to just split on the boundaries between words and non-words. since the runs of spaces will be preserved, it just rejoins with an empty string.