我想将孟加拉语数字替换为英语数字.如
var bengali = [?,?,?,?,?,?,?,?,?,?];
var eng = [0,1,2,3,4,5,6,7,8,9];
Run Code Online (Sandbox Code Playgroud)
bengali.replace(eng);
所以任何人都可以写任何bengali数字,然后将其转换为英文数字.我怎样才能做到这一点?
在 Javascript 中将孟加拉数字转换为等效的阿拉伯(英语)数字的简单简短方法是以下 onliner 函数。
\n它还会将句子中的孟加拉语数字转换为阿拉伯语,而其他文本保持不变。
\n您可以在“onkeyup”事件上调用该函数以立即转换文本。
\nconst toEn = n => n.replace(/[\xe0\xa7\xa6-\xe0\xa7\xaf]/g, d => "\xe0\xa7\xa6\xe0\xa7\xa7\xe0\xa7\xa8\xe0\xa7\xa9\xe0\xa7\xaa\xe0\xa7\xab\xe0\xa7\xac\xe0\xa7\xad\xe0\xa7\xae\xe0\xa7\xaf".indexOf(d));\n\n\n// Tests\nconsole.log(toEn("\xe0\xa7\xac\xe0\xa7\xad\xe0\xa7\xae\xe0\xa7\xaf.\xe0\xa7\xae\xe0\xa7\xaf")); //6789.89\nconsole.log(toEn("The Number is: \xe0\xa7\xac\xe0\xa7\xad\xe0\xa7\xae\xe0\xa7\xaf.\xe0\xa7\xae\xe0\xa7\xaf")); //The Number is: 6789.89\nconsole.log(toEn("\xe0\xa7\xa6\xe0\xa7\xa7\xe0\xa7\xa8\xe0\xa7\xa9\xe0\xa7\xaa\xe0\xa7\xab\xe0\xa7\xac\xe0\xa7\xad\xe0\xa7\xae\xe0\xa7\xaf.\xe0\xa7\xae\xe0\xa7\xaf")); //0123456789.89\nconsole.log(toEn("\xe0\xa7\xa6\xe0\xa7\xa7\xe0\xa7\xa8\xe0\xa7\xa9\xe0\xa7\xaa\xe0\xa7\xab\xe0\xa7\xac\xe0\xa7\xad\xe0\xa7\xae\xe0\xa7\xaf")); //0123456789\nconsole.log(toEn("\xe0\xa6\xa6\xe0\xa6\xbe\xe0\xa6\xae \xe0\xa7\xa7\xe0\xa7\xa8\xe0\xa7\xa9\xe0\xa7\xaa")); //\xe0\xa6\xa6\xe0\xa6\xbe\xe0\xa6\xae 1234\nconsole.log(toEn("\xe0\xa6\xae\xe0\xa7\x8b\xe0\xa6\x9f \xe0\xa7\xa7\xe0\xa7\xa8\xe0\xa7\xa9\xe0\xa7\xaa")); //\xe0\xa6\xae\xe0\xa7\x8b\xe0\xa6\x9f 1234Run Code Online (Sandbox Code Playgroud)\r\n更新为添加将英语(阿拉伯语)数字更改为孟加拉语的相反内容。这是一个较短的单行代码:
\nconst toBn = n => n.replace(/\\d/g, d => "\xe0\xa7\xa6\xe0\xa7\xa7\xe0\xa7\xa8\xe0\xa7\xa9\xe0\xa7\xaa\xe0\xa7\xab\xe0\xa7\xac\xe0\xa7\xad\xe0\xa7\xae\xe0\xa7\xaf"[d])\n\n// Tests\nconsole.log(toBn("6789.89")); //\xe0\xa7\xac\xe0\xa7\xad\xe0\xa7\xae\xe0\xa7\xaf.\xe0\xa7\xae\xe0\xa7\xaf\nconsole.log(toBn("The Number is: 6789.89")); //The Number is: \xe0\xa7\xac\xe0\xa7\xad\xe0\xa7\xae\xe0\xa7\xaf.\xe0\xa7\xae\xe0\xa7\xaf\nconsole.log(toBn("0123456789.89")); //\xe0\xa7\xa6\xe0\xa7\xa7\xe0\xa7\xa8\xe0\xa7\xa9\xe0\xa7\xaa\xe0\xa7\xab\xe0\xa7\xac\xe0\xa7\xad\xe0\xa7\xae\xe0\xa7\xaf.\xe0\xa7\xae\xe0\xa7\xaf\nconsole.log(toBn("0123456789")); //\xe0\xa7\xa6\xe0\xa7\xa7\xe0\xa7\xa8\xe0\xa7\xa9\xe0\xa7\xaa\xe0\xa7\xab\xe0\xa7\xac\xe0\xa7\xad\xe0\xa7\xae\xe0\xa7\xaf\nconsole.log(toBn("1234")); //\xe0\xa7\xa7\xe0\xa7\xa8\xe0\xa7\xa9\xe0\xa7\xaaRun Code Online (Sandbox Code Playgroud)\r\n您有两种选择,具体取决于您希望代码的可维护性.
我建议使用由孟加拉语数字键入的哈希值,并替换为值:
var numbers = {
'?': 0,
'?': 1,
'?': 2,
'?': 3,
'?': 4,
'?': 5,
'?': 6,
'?': 7,
'?': 8,
'?': 9
};
function replaceNumbers(input) {
var output = [];
for (var i = 0; i < input.length; ++i) {
if (numbers.hasOwnProperty(input[i])) {
output.push(numbers[input[i]]);
} else {
output.push(input[i]);
}
}
return output.join('');
}
document.getElementById('r').textContent = replaceNumbers('? ? ?');Run Code Online (Sandbox Code Playgroud)
<pre id=r></pre>Run Code Online (Sandbox Code Playgroud)
如果由于某种原因,那是不可能的,那么你可以使用两个数组和类似的技术在它们之间进行映射.
| 归档时间: |
|
| 查看次数: |
1261 次 |
| 最近记录: |