javascriptの中でどのように中国語と英語の混合文字列の長さを得ますか?

1215 ワード

同僚が会社のOAで、Javascriptで中国語の混合文字列の長さをどうやって取得するかを紹介してくれました.正規表現を使います.
 
  
var str = ” tank ”;
var len = str.match(/[^ -~]/g) == null ? str.length : str.length + str.match(/[^ -~]/g).length ;
本を調べたら、少し分かりました.
西文の常用文字セットは、スペース"(^-~)から"~"(0 x 7 e)までで構成されています.漢字はこの文字集の外に落ちます.正規表現[^-~]は、スペース以外の文字セットを表しています.
 
  
string.match(regex) string regex , ,
str.match(/[^ -~]/g) 。
var str = "dd ";
// " , ", , 2
alert(str.match(/[^ -~]/g));
このように、var len=str.match(/[^-]/g)=null?str.length:str.length+str.match(/[^-]/g).length;strの正確な長さが得られます.
javascriptでは、一つの漢字の長さも1として計算されています.データベースに提出すると、長さが基準を超えるエラーが発生することがよくあります.今はこの方法を使って、提出する前にまず検査してもいいです.
注:上記のコードには一部の符号に問題があります.修正したら、下記の関数に変更します.
 
  
function get_strlength (str)
{
var len = 0;

if (str.match(/[^ -~]/g) == null)
{
len = str.length;
}
else
{
len = str.length + str.match(/[^ -~]/g).length;
}

return len;
}