反向字符串大于一定长度

时间:2014-06-14 01:46:02

标签: javascript

我正在研究一个问题,我需要能够翻转一个句子,但只有大于4的单词才能被反转。其余的单词必须与它们相同。我试图检查长度是否大于4,但这不会返回我正在寻找的结果。我只需要翻转句子中大于4的单词。非常感谢任何帮助。

编辑:这是我知道怎么做的简单。它颠倒了所有的句子。我确信需要某种方法来分解每个单词并确定单词的长度然后将句子重新组合在一起,但我不知道如何做到这一点。

var sentence = "This could be the answer I need";

if (sentence.length > 4) {
 console.log( sentence.split('').reverse().join(''));
}

谢谢

5 个答案:

答案 0 :(得分:4)

简而言之:

var s = 'This is a short sentence'
  , e = s.split(' ').map(function(v){ return v.length>4?v.split('').reverse().join(''):v; }).join(' ');

console.log(e); // 'This is a trohs ecnetnes'

<强>解释

var s = 'This is a short sentence' // set test sentence
  , e = s.split(' ')               // 'This is a short sentence' ==> ['This','is','a','short','sentence']
         .map(function(v,i,a){     // REPLACE the value of the current index in the array (run for each element in the array)
            return v.length > 4    // IF the length of the a 'word' in the array is greater than 4
                 ? v.split('')     // THEN return: 'word' ==> ['w','o','r','d']
                    .reverse()     // ['w','o','r','d'] ==> ['d','r','o','w']
                    .join('')      // ['d','r','o','w'] ==> 'drow'
                 : v;              // OR return: the original 'word'
         }).join(' ');             // ['This','is','a','trohs','ecnetnes'] ==> 'This is a trohs ecnetnes'

console.log(e); // 'This is a trohs ecnetnes'

答案 1 :(得分:0)

您没有向我们展示您的源代码,因此很难知道您有多远。不想只是给你代码,因此删除学习如何将它组合在一起的机会,我建议你研究以下事项:

  • String split()方法,可用于将句子拆分为数组中的单个单词

  • 了解如何在for循环中迭代字符串数组,查找长度超过4个字符的字符串。

  • 了解如何在原地反转字符串 - 请参阅this answer。仅将其应用于超出正确大小的字符串。确保用arry中的反向字符串替换原始字符串。

  • 然后了解Array join()方法的工作原理。

如果我在描述中过于简单化,我很抱歉 - 但很难从你的问题中理解你需要多少拼写。希望这有用。

答案 2 :(得分:0)

最简单的方法是执行以下操作: 拆分空间上的字符串。 (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split

使用forEach函数循环遍历每个元素,如果长度> 1,则反转。 4(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

然后使用join完成将数组的所有元素放入一个字符串(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join

答案 3 :(得分:0)

//对于大于等于5的字长

function reverseString(s){
  return s.split(' ').
      map( v => { 
         return v.length > 4 ?  v.split('').
         reverse().join('') : v; 
      } ).join(' ');  

}

OR

function reverseString(string){
  return string.replace(/\w{5,}/g, function(w) { return w.split('').reverse().join('') })
}

替换为您的字符串字长

答案 4 :(得分:-1)

使用正则表达式匹配至少包含5个字符的单词,并替换为反转字符:

var s = "I am working on a problem where I need to be able to reverse a sentence but only words that are greater than 4 can be reversed.";

s2 = s.replace(/\b(\w\w\w\w\w+)\b/g, function(word) {
    return word.split("").reverse().join("");
});

console.log(s2);

输出:

I am gnikrow on a melborp erehw I need to be able to esrever a ecnetnes but only sdrow that are retaerg than 4 can be desrever. 

fiddle