我正在研究一个问题,我需要能够逆转一个句子,但只有大于4的单词可以逆转。其余的单词必须保持原样。我试着检查看看长度是否大于4,但这并没有返回我正在寻找的结果。我所需要做的就是反转句子中大于4的单词。如有任何帮助,不胜感激。
编辑:这是我知道怎么做的简单方法。它颠倒了整个句子。我确信需要某种方法来分解每个单词并确定单词的长度,然后将句子重新组合起来,但我不知道如何做到这一点。var sentence = "This could be the answer I need";
if (sentence.length > 4) {
console.log( sentence.split('').reverse().join(''));
}
谢谢
总之:
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'
您没有向我们展示您的源代码,因此很难知道您取得了什么进展。我不想只给您代码,从而消除了学习如何将其组合在一起的机会,我建议您查看以下内容:
-
String split()方法,可用于将句子拆分为数组中的单个单词
-
了解如何在for循环中遍历字符串数组,查找长度大于4个字符的字符串
-
了解如何在原位反转字符串-参见此答案。只对超过正确大小的字符串应用此方法。
请确保将原始字符串替换为数组中的反向字符串。 然后理解Array join()方法是如何工作的
最简单的方法是:在空格上分割字符串。(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split)
使用forEach函数遍历每个元素,如果长度> 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)
//对于大于等于5的字长
function reverseString(s){
return s.split(' ').
map( v => {
return v.length > 4 ? v.split('').
reverse().join('') : v;
} ).join(' ');
}
或
function reverseString(string){
return string.replace(/w{5,}/g, function(w) { return w.split('').reverse().join('') })
}
用你的字符串字长替换
使用regex匹配至少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(wwwww+)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.
小提琴