如何使用JavaScript正确反转字符串

为什么用javascript触摸这么简单的主题?反向字符串?真的像我们想象的那么简单吗?会给这个功能带来问题吗?只是谷歌如何反向与javascript字符串。

// The most easy way to reverse a stringvar text = "This is my text"; var reversedText = text.split('').reverse().join(''); // if you don't know how it works ...// string.split("") : split a string in every character and convert it to an array// something like : ["T", "h", "i", "s", " ", "i", "s", " ", "m", "y", " ", "t", "e", "x", "t"]// then // string.split("").reverse() // will reverse the array for// ["t", "x", "e", "t", " ", "y", "m", " ", "s", "i", " ", "s", "i", "h", "T"]// then // string.split("").reverse().join("") : Join every item in the array by ""console.log(reversedText); // Outputs "txet ym si sihT"

在不影响代码性能的情况下执行此操作的最简单方法, 但是, 如果你的项目需要处理, 那么这条很棒的代码行有一些不好的事情, 你应该考虑
以下示例将显示此行代码失败的情况:
// Wrap the line in a function to understand bettervar reverseString = function(text){    return text.split("").reverse().join(""); }; // case 1reverseString('ma?ana man?ana'); // outputs : "ana?nam ana?am" (note the accent in the "a" character in the second word)// case 2reverseString('foo ???? bar'); // outputs 'rab ?? oof'// The `????` symbol dissapears, which shouldn't happen because our string changes !

为什么会这样?简单, 编纂。对于包含代理对的UTF-16字符串, 例如在基本多语言平面之外的字符, 该字符串将被错误地反转。如果你想详细了解一下(并想睡一会儿), 请阅读本文, 这将消除你的疑问。
如果你是受此问题困扰并必须解决的不幸者之一, 也许你并不是那么不幸。
由mathiasbynens创建和发布的esrever库可以轻松解决此问题。
如何使用它
该库有一个详细的文档, 说明如何在每个javascript环境(服务器端, 浏览器, shell)中包含和使用它。以下示例显示了如何在浏览器中使用它:
< script src="http://www.srcmini.com/path/to/library/esrever.js"> < /script> < script>     // esrever variable will be now available when you include the library    var input = 'Lorem ipsum ???? dolor sit ame??t.';     var reversed = esrever.reverse(input);     console.log(reversed); // outputs '.te??ma tis rolod ???? muspi meroL'< /script>

此函数接受一个字符串, 并返回该字符串的反向版本, 正确考虑了Unicode组合标记和星体符号的情况。
我以前怎么说, 如果你不使用UTF-16字符串, 则可以使用最知名的函数来反转字符串。
【如何使用JavaScript正确反转字符串】你是这个问题的受害者吗?在评论框中告诉我们此解决方案如何为你服务。

    推荐阅读