反向字串
在 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"