Determine the number of Arabic characters in a string in JavaScript

I know how to detect arabic characters in a string.

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

I am wondering how to determine the total number of Arabic characters in a string?

+4
source share
2 answers

Alternative 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;

Alternative Cycle for Performance

If performance is important, you can also do a loop:

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;
}

In some quick JSPerf tests, the loop version works 30 times better on short lines and 10 times better on long lines (7000 characters). Change between browsers.

+2
source

You can do it as follows:

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;
}

Here is the fiddle: http://jsfiddle.net/Goodluck/Gt64t/

0

Source: https://habr.com/ru/post/1526881/


All Articles