gpt4 book ai didi

javascript - 为什么 Javascript 字符串替换会颠倒从右到左语言的词序?

转载 作者:数据小太阳 更新时间:2023-10-29 05:25:08 34 4
gpt4 key购买 nike

我很好奇为什么以下占位符替换从右到左的语言(这些是随机的阿拉伯字符)会导致格式化字符串反转所有单词。

'{0} تكنولوجيا'.replace('{0}', 'هلهل')
=> "هلهل تكنولوجيا"

此行为已在最新的 Chrome、FF 和 Safari 中观察到。它使 Node 中的词序保持不变。

最佳答案

事实并非如此。 replace 完全按照您的要求执行:将该字符串的前三个字母替换为 هلهل;我打算把它变成 四个 而不是三个,这样原始的和替换的长度是相同的(这样更容易看到发生了什么):

var before = '{00} تكنولوجيا';
var rep = 'هلهل';
var after = before.replace('{00}', rep);
console.log("before", before.split("").map(toCharCode).join(", "));
console.log("rep ", rep.split("").map(toCharCode).join(", "));
console.log("after ", after.split("").map(toCharCode).join(", "));

function toCharCode(c) {
var hex = c.charCodeAt(0).toString(16);
hex = "0000".substr(hex.length - 4) + hex;
return "U-" + hex;
}

输出:

before U-007b, U-0030, U-0030, U-007d, U-0020, U-062a, U-0643, U-0646, U-0648, U-0644, U-0648, U-062c, U-064a, U-0627rep    U-0647, U-0644, U-0647, U-0644after  U-0647, U-0644, U-0647, U-0644, U-0020, U-062a, U-0643, U-0646, U-0648, U-0644, U-0648, U-062c, U-064a, U-0627

请注意,替换序列(U-0647、U-0644、U-0647、U-0644)现在位于字符串的开头。

您看到的是字符串显示 的方式。因为 RTL 字符的连续跨度是从右到左显示的,所以您现在有一个 RTL 跨度,它以这种方式显示:替换在开头(最右边),文本继续到左边。之前,您对 LTR 和 RTL 有误,表现为 LTR(从左到右显示)后跟 RTL(从右到左显示)。

关于javascript - 为什么 Javascript 字符串替换会颠倒从右到左语言的词序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38977470/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com