基础js实现句子反转
使用 split 和 reverse 方法
将字符串按空格分割成数组,反转数组后再合并成字符串。这种方法适合简单句子反转。
function reverseSentence(sentence) {
return sentence.split(' ').reverse().join(' ');
}
处理标点符号
如果需要保留标点符号在单词末尾,可以使用正则表达式分割。

function reverseSentenceWithPunctuation(sentence) {
return sentence.split(/(\s+)/).reverse().join('');
}
手动实现反转
不使用内置方法,通过循环手动实现反转。

function manualReverse(sentence) {
let words = [];
let currentWord = '';
for (let char of sentence) {
if (char === ' ') {
words.push(currentWord);
currentWord = '';
} else {
currentWord += char;
}
}
words.push(currentWord);
let reversed = '';
for (let i = words.length - 1; i >= 0; i--) {
reversed += words[i] + (i > 0 ? ' ' : '');
}
return reversed;
}
考虑 Unicode 字符
处理包含表情符号等复杂 Unicode 字符的句子。
function unicodeReverse(sentence) {
const segments = [...new Intl.Segmenter().segment(sentence)].map(x => x.segment);
return segments.reverse().join('');
}
性能优化版本
对于超长字符串,使用数组操作可能更高效。
function optimizedReverse(sentence) {
const words = [];
let start = 0;
for (let i = 0; i <= sentence.length; i++) {
if (sentence[i] === ' ' || i === sentence.length) {
words.push(sentence.slice(start, i));
start = i + 1;
}
}
let result = '';
for (let j = words.length - 1; j >= 0; j--) {
result += words[j] + (j > 0 ? ' ' : '');
}
return result;
}






