'Reverse strings without changing the order of words in a sentence
My Code:
I tried the following code but the order of words are changing
var str = "Welcome to my Website !";
alert(str.split("").reverse().join(""));
It is giving result as
! etisbeW ym ot emocleW
But I need the result as
emocleW ot ym etisbeW !
That is, I don't want to change the order of words.
Solution 1:[1]
You can split on spaces, and then use map to reverse the letters in each word:
alert(str.split(" ").map(function(x) {
return x.split("").reverse().join("");
}).join(" "));?
Solution 2:[2]
For older browser support you can try this,
var str = "Welcome to my Website !";
String.prototype.str_reverse= function(){
return this.split('').reverse().join('');
}
var arr = str.split(" ");
for(var i=0; i<arr.length; i++){
arr[i] = arr[i].str_reverse();
}
alert(arr.join(" ")); //OUTPUT: emocleW ot ym etisbeW !
Solution 3:[3]
I just solved this using a functional approach and typescript:
const aString = "Our life always expresses the result of our dominant thoughts.";
function reverseString (str: string) :string {
return str.split('').reverse().join('')
}
function reverseWords(str:string) :string {
return str.split(" ").map(reverseString).join(" ")
}
console.log(reverseWords(aString))
// ruO efil syawla sesserpxe eht tluser fo ruo tnanimod .sthguoht
Solution 4:[4]
You can also achieve this using:
[...word].reverse().join('')
Which in my opinion is a little bit cleaner
[...word] - makes an array out of string
.reverse() - reverses the array
.join('') - joins the array into a string
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 | McGarnagle |
| Solution 2 | Muthu Kumaran |
| Solution 3 | Josefina |
| Solution 4 | damian-chudziak808 |
