反转字符串中的每个单词而不改变单词顺序

时间:2016-01-21 18:50:34

标签: javascript arrays string reverse

环顾四周,无法找到答案。

我试图反转字符串中的每个单词而不改变单词的顺序......

这是我的代码:

  function wordsReverser(string){
    return string.split('').reverse().join('');
  }
  console.log(wordsReverser('New string, same results.'));

我得到的结果是: " .stluser emas,gnirts weN​​"

我正在寻找: " wen gnirts ..."

这是jsbin

4 个答案:

答案 0 :(得分:4)

Try something like this.

function wordsReverser(string){
return string.split("").reverse().join("").split(" ").reverse().join(" ")  
}

console.log(wordsReverser('New string, same results.'));

答案 1 :(得分:2)

这是一个JSFiddle,提供您正在寻找的解决方案https://jsfiddle.net/e109c4pc/

function wordsReverser(string){
    var arr = string.split("");
    var output = [];
    for(var i = arr.length - 1;  i >= 0; i--){
        output.push(arr[i]);
    }
  return output.join("");
}

答案 2 :(得分:0)

更新:编辑了答案以反映更新后的问题

function wordsReverser(string){
    return string.split(' ').map(function(word) { 
        return word.split('').reverse().join(''); 
    }).join(' ');
}
alert(wordsReverser('New string, same results.'));
// weN ,gnirts emas .stluser

如果你想保留标点符号:

function wordsReverser(string){
    return string.split(' ').map(function(word) { 
        var rev = word.split('').reverse().join('');
        if (['.',','].indexOf(rev[0]) > -1) {
          rev = rev.slice(1) + rev[0];
        }
        return rev;
    }).join(' ');
}
alert(wordsReverser('New string, same results.'));
// weN gnirts, emas stluser.

答案 3 :(得分:0)

您需要将文本拆分为单独的单词,然后单独翻转每个单词。



function wordsReverser(string){
   var words = string.split(' ');
   var result = [];
   for(var i = 0; i < words.length; i ++){
     result.push(words[i].split('').reverse().join(''));
   }  
   return result.join(' ');
}

console.log(wordsReverser('New string, same results.'));
&#13;
&#13;
&#13;