JavaScript - 替换为英文编号

时间:2015-06-03 19:43:23

标签: javascript

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

 var bengali = [০,১,২,৩,৪,৫,৬,৭,৮,৯];
 var eng = [0,1,2,3,4,5,6,7,8,9];

bengali.replace(eng);

所以任何人都可以写任何bengali号码,然后转换为英文号码。我怎样才能做到这一点?

6 个答案:

答案 0 :(得分:7)

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

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



<pre id=r></pre>
&#13;
Realm.getInstance(context)
&#13;
&#13;
&#13;

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

答案 1 :(得分:2)

只有Array数组(但是,您需要用引号括起每个字符)和内置的indexOf()方法var bengali = ["০", "১", "২", "৩", "৪", "৫", "৬", "৭", "৮", "৯"]; console.log(bengali.indexOf("০")); // index is: 0 console.log(bengali.indexOf("১")); // index is: 1 console.log(bengali.indexOf("২")); // index is: 2 console.log(bengali.indexOf("৩")); // index is: 3 console.log(bengali.indexOf("৪")); // index is: 4 console.log(bengali.indexOf("৫")); // index is: 5 console.log(bengali.indexOf("৬")); // index is: 6 console.log(bengali.indexOf("৭")); // index is: 7 console.log(bengali.indexOf("৮")); // index is: 8 console.log(bengali.indexOf("৯")); // index is: 9 ,您拥有所需的一切。此代码演示了它:

replace

因此,您在 Dim path As String = Directory.GetCurrentDirectory() Dim command As String = "cd " & path & " & " & argument MsgBox(command) Dim file As System.IO.StreamWriter file = My.Computer.FileSystem.OpenTextFileWriter(tempFile, False) file.WriteLine("@ECHO OFF") file.WriteLine(command) file.Close() Dim objProcess As New Process() Dim SROutput As System.IO.StreamReader With objProcess.StartInfo .FileName = tempFile .RedirectStandardOutput = True .UseShellExecute = False .Arguments = "" End With objProcess.Start() SROutput = objProcess.StandardOutput Do While SROutput.Peek <> -1 'MessageBox.Show(SROutput.ReadLine) rtbOutput.Text = rtbOutput.Text & SROutput.ReadLine & vbNewLine Loop objProcess.Dispose() 'Process.Start(tempFile) rtbOutput.Text = rtbOutput.Text & message & vbNewLine 函数中所要做的就是返回您正在检查的字符的索引。

答案 2 :(得分:1)

每个人的答案都是可行的。但是 javascript 无法与直接孟加拉数字进行比较。您应该使用以下数组进行孟加拉语到英语的转换

var numbers = {
        "\u09E6" : 0,
        "\u09E7" : 1,
        "\u09E8" : 2,
        "\u09E9" : 3,
        "\u09EA" : 4,
        "\u09EB" : 5,
        "\u09EC" : 6,
        "\u09ED" : 7,
        "\u09EE" : 8,
        "\u09EF" : 9
    };

答案 3 :(得分:0)

AJS中的工作代码

在视图中:

<h1>{{replaceNumbersE2B('123.456908')}}</h1>
<h1>{{replaceNumbersB2E('৪৫৬.৯০৮')}}</h1>

在ctrl中:

$scope.testNumber = "";
        var numbersB = {
            '০': 0,
            '১': 1,
            '২': 2,
            '৩': 3,
            '৪': 4,
            '৫': 5,
            '৬': 6,
            '৭': 7,
            '৮': 8,
            '৯': 9
        };

        $scope.replaceNumbersB2E = function (input) {
            var output = [];
            for (var i = 0; i < input.length; ++i) {
                if (numbersB.hasOwnProperty(input[i])) {
                    output.push(numbersB[input[i]]);
                } else {
                    output.push(input[i]);
                }
            }
            return output.join('');
        }

        //$scope.testNumber = $scope.replaceNumbersB2E('৯৭৩');



        var numbersE = {
            0:'০',
            1:'১',
            2:'২',
            3:'৩',
            4:'৪',
            5:'৫',
            6:'৬',
            7:'৭',
            8:'৮',
            9:'৯'
        };

        $scope.replaceNumbersE2B = function (input) {
            var output = [];
            for (var i = 0; i < input.length; ++i) {
                if (numbersE.hasOwnProperty(input[i])) {
                    output.push(numbersE[input[i]]);
                } else {
                    output.push(input[i]);
                }
            }
            return output.join('');
        }

        $scope.testNumber = $scope.replaceNumbersE2B('111.65666');
        alert($scope.testNumber);

答案 4 :(得分:0)

英语为孟加拉语的数字

1,2,3 ...使用pipe(angular)或filter(angularjs)转换为১,২,৩ ....

角度示例:

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'englishToBanglaNumber'
})

export class EnglishToBanglaNumberPipe implements PipeTransform {

  transform(value: any, args?: any): any {

    var finalEnlishToBanglaNumber = {
      '0': '০', '1': '১', '2': '২', '3': '৩', '4': '৪', '5': '৫', '6': '৬', '7': '৭', '8': '৮', '9': '৯'
    };
    var retStr = value;
    for (var x in finalEnlishToBanglaNumber) {
      retStr = retStr.replace(new RegExp(x, 'g'), finalEnlishToBanglaNumber[x]);
    }
    return retStr;
  }
}

在component.html中使用

 <b>{{"123" | englishToBanglaNumber}}</b> 

结果:১২৩

angularjs示例

app.filter('englishToBanglaNumber', [function () {
    return function (text) {
        var finalEnlishToBanglaNumber = {
            '0': '০', '1': '১', '2': '২', '3': '৩', '4': '৪', '5': '৫', '6': '৬', '7': '৭', '8': '৮', '9': '৯'
        };
        String.prototype.getDigitBanglaFromEnglish = function () {
            var retStr = this;
            for (var x in finalEnlishToBanglaNumber) {
                retStr = retStr.replace(new RegExp(x, 'g'), finalEnlishToBanglaNumber[x]);
            }
            return retStr;
        }; 

        return text.getDigitBanglaFromEnglish();
    };
}]);

  

如果您将孟加拉语转换为英语,只需修改“替换方法”

retStr.replace(new RegExp(finalEnlishToBanglaNumber[x], 'g'), x);

答案 5 :(得分:0)

这也是一个很好的解决方案。

    const convertBanglaToEnglishNumber=(str)=>{
    let banglaNumber= 
        {'০': 0,
        '১': 1,
        '২': 2,
        '৩': 3,
        '৪': 4,
        '৫': 5,
        '৬': 6,
        '৭': 7,
        '৮': 8,
        '৯': 9}
    for (var x in banglaNumber) {
        str = str.replace(new RegExp(x, 'g'), banglaNumber[x]);
    }
    return str;
}