在JavaScript中检测字符串中的阿拉伯字符数

时间:2014-02-14 07:09:42

标签: javascript

我知道如何检测字符串中的阿拉伯字符。

var arabic = /[\u0600-\u06FF]/;
var string = 'عربية‎';
var flag = arabic.test(string); // flag is true in this case

我想知道如何检测字符串中的阿拉伯字符总数?

2 个答案:

答案 0 :(得分:2)

Regexp替代

var arabic = /[\u0600-\u06FF]/g, // <--- g=Match global (all)
    string = 'مرحبا';
    count  = string.split(arabic).length - 1);

// Or
var match = string.match(arabic);
count = match ? match.length : 0;

循环替代性能

如果表现很重要,你也可以做一个循环:

function count(string){ 
    var char, i, len = string.length, count = 0;
    for (i = 0; i < len; ++i)
        if ((char = string.charCodeAt(i)) >= 0x600 && char <= 0x6ff)
            ++count;
    return count;
}

在一些快速的JSPerf测试中,循环版本在短字符串上执行 30倍 在短字符串上执行 >长字符串(7000个字符)。在浏览器之间变化。

答案 1 :(得分:0)

你可以这样做:

var string = 'ربية';
function isArabic(char){
    var pattern = new RegExp(/[\u0600-\u06FF]/);
    return pattern.test(char);
}

function count(string){ 
    var count = 0;
    for (var i = 0; i< string.length; i++){
        if (isArabic(string.charAt(i))){
            count++;
        };
    };
    return count;
}

这是小提琴: http://jsfiddle.net/Goodluck/Gt64t/