javascript - 在 JavaScript 中输入时将拉丁字母动态替换为西里尔字母
问题描述
我正在尝试构建这个程序,它需要输入部分类似于谷歌翻译的。也就是说,拉丁字母在键入时会动态替换为西里尔字母(例如,当键入字母 B 时,字母 Б 会打印在输入框中,依此类推)
我尝试通过 onkeyup 事件将拉丁字母与西里尔字母联系起来,但是像 Sh(Ш) 或 Ya(Я) 这样的字母与组合键相关联,我找不到解决方法。我会包含我已经尝试过的代码示例,但我遇到的问题更多是与计划相关的,而不是与实施相关的。如果我能得到帮助来弄清楚如何解决和构建这个问题,那就太好了。
TIA
解决方案
我很无聊,所以我编写了一个示例(概念证明)
我不断确定普通文本是什么,以及转换后的文本是什么,这就是允许多个键组合的原因(不仅查看每个键输入的整个字符串)
var _change={sh:'lol',ab:'cd',a:'z',SH:'LOL',AB:'CD',A:'Z'} //largest strings first
var _default={lol:'sh',cd:'ab',z:'a',LOL:'SH',CD:'AB',Z:'A'} //largest strings first
//you can fill these objects with as many translations as you want
//if a smaller string was first, "ab" would turn to "zb" before it can turn into "cd"
//make sure the every translation text is different from any original text
var _text=document.getElementById('text')
let defaultText=(text)=>text.split('').map(l=>_default[l]||l).join('')
let changeText=(text)=>{
Object.keys(_change).forEach(toSplit=>text=text.split(toSplit).join(_change[toSplit]))
return text
}
setInterval(()=>{
let text=_text.value
_text.value=changeText(defaultText(text))
},300)
<input id="text" />
<p>I only have 3(technically 6) examples.. <i>'sh' to 'lol'</i>, <i>'a' to 'z'</i> and <i>'ab' to 'cd'</i>
<br><p>technically 6 because I also have <i>'SH' to 'LOL'</i> and so forth
推荐阅读
- kubernetes - istio 中是否允许交叉规则?应用它的策略是什么?
- javascript - 什么是“PHP”的运行时环境,例如“Javascript”的“Node.js”运行时环境,用于构建服务器端 Web 应用程序?
- java - 使用 JavaMail 发送带有附件的邮件 - 编写 Multipart 时出现异常
- macos - macOS - 未授权将 Apple 事件发送到 <>
- r - 如何在胶水内制作上标?
- c# - 从 S3 下载后生成的 Zip 文件无效
- r - 如何在数据集中找到超过 6 个值的最大增量
- java - java.lang.NoClassDefFoundError: javax/persistence/TableGenerators
- google-cloud-platform - Google Cloud Run 不同时支持域和子域
- python - 用循环检查一个部分是否存在于 json 数组中