反向字符串
在 JavaScript 中反转字符串的最流行方式是以下代码片段,这很常见:
function reverseString(str) {
return str.split('').reverse().join('');
}
reverseString('string'); // "gnirts"
但是,只有在被反转的字符串不包含代理项对时,这才会起作用。星体符号,即基本多语言平面之外的字符,可以由两个代码单元表示,并且将导致这种天真的技术产生错误的结果。此外,具有组合标记(例如分音符)的字符将出现在逻辑下一个字符上,而不是与其组合的原始字符上。
'𝌆■.'.split('').reverse().join(''); //fails
虽然该方法适用于大多数语言,但是对于字符串反转而言,真正准确的编码尊重算法稍微复杂一些。一个这样的实现是一个名为 Esrever 的小型库,它使用正则表达式来匹配组合标记和代理对,以便完美地执行反转。
说明
部分 | 说明 | 结果 |
---|---|---|
str |
输入字符串 | string |
String.prototype.split( deliminator ) |
将字符串 str 拆分为数组。参数 "" 表示在每个字符之间进行拆分。 |
["s","t","r","i","n","g"] |
Array.prototype.reverse() |
从拆分字符串返回数组,其元素的顺序相反。 | ["g","n","i","r","t","s"] |
Array.prototype.join( deliminator ) |
将数组中的元素连接成一个字符串。"" 参数表示空的分隔符(即,数组的元素彼此相邻)。 |
gnirts |
使用传播运算符
Version >= 6
function reverseString(str) {
return [...String(str)].reverse().join('');
}
console.log(reverseString('stackoverflow')); // "wolfrevokcats"
console.log(reverseString(1337)); // "7331"
console.log(reverseString([1, 2, 3])); // "3,2,1"
自定义 reverse()
功能
function reverse(string) {
var strRev = "";
for (var i = string.length - 1; i >= 0; i--) {
strRev += string[i];
}
return strRev;
}
reverse("zebra"); // "arbez"