如何使用原生JavaScript将视觉希伯来语转换为逻辑希伯来语
实现方案
你当前的逐字符全反转逻辑,会把混合文本里不需要反转的英文、数字等拉丁字符也倒序,是出现混合显示异常的核心原因。可以通过正则匹配拆分文本块的方式实现需求,思路如下:
- 用正则匹配所有希伯来语字符块,仅对这部分内容做反转处理
- 括号映射替换仅作用于需要反转的文本段,非希伯来语段保持原有顺序和符号不变
下面是优化后的实现代码:
function myHebrewPrint(text: string ): void { // 括号配对映射表 const bracketMap = { '(': ')', ')': '(', '[': ']', ']': '[', '{': '}', '}': '{' } // 匹配希伯来语字符的正则,覆盖希伯来语字母、常用标点范围 const hebrewReg = /[\u0590-\u05FF]+/g // 仅处理希伯来语块 const result = text.replace(hebrewReg, (block) => { return block.split('') .map(char => bracketMap[char] || char) .reverse() .join('') }) // 适配Minecraft Education全局翻转渲染的补充处理(如果你的场景需要全串整体倒序再加这一步) // const finalResult = result.split('').map(char => bracketMap[char] || char).reverse().join('') console.log(result) }
内容的提问来源于stack exchange,提问作者Eitan Levi
相关产品推荐
相关产品推荐

