JavaScript - 替换为英文编号

Rej*_*lam 4 javascript

我想将孟加拉语数字替换为英语数字.如

 var bengali = [?,?,?,?,?,?,?,?,?,?];
 var eng = [0,1,2,3,4,5,6,7,8,9];
Run Code Online (Sandbox Code Playgroud)

bengali.replace(eng);

所以任何人都可以写任何bengali数字,然后将其转换为英文数字.我怎样才能做到这一点?

Moh*_*fei 9

在 Javascript 中将孟加拉数字转换为等效的阿拉伯(英语)数字的简单简短方法是以下 onliner 函数。

\n

它还会将句子中的孟加拉语数字转换为阿拉伯语,而其他文本保持不变。

\n

您可以在“onkeyup”事件上调用该函数以立即转换文本。

\n

\r\n
\r\n
const 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 1234
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n

更新为添加将英语(阿拉伯语)数字更改为孟加拉语的相反内容。这是一个较短的单行代码:

\n

\r\n
\r\n
const 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\xaa
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n


ssu*_*ube 8

您有两种选择,具体取决于您希望代码的可维护性.

我建议使用由孟加拉语数字键入的哈希值,并替换为值:

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)

如果由于某种原因,那是不可能的,那么你可以使用两个数组和类似的技术在它们之间进行映射.