javascriptで正則を使って中国語の長さを計算する例

891 ワード

javascriptはunicode符号化であるため、すべての文字はそれにとって一つは一つであるが、バックグラウンドプログラムではなく、通常はバックグラウンドプログラムで一つの中国語は二つのバイトを占めるので、これは前後のテスト長さが一致しないことを招き、この問題は正則によって解決できます.
 
  
function getRealLen( str ) {
    return str.replace(/[^\x00-\xff]/g, '__').length; //
}
もう一つの小則技巧を添付します.
時には美観のために、レイアウトとインタフェースに影響しないために、いくつかの文案で字を切りますが、中国語の幅と英語の幅が違っています.もし英語の標準に基づいて中国語のを切りますと、あるいは中国語の標準によって英語のを切ります.
 
  
function beautySub( str, len) {
       var reg = /[\u4e00-\u9fa5]/g,    //
           slice = str.substring(0,len),
           realen = len - ( ~~( slice.match(reg) && slice.match(reg).length ) );
           return slice.substring(0, realen ? realen : 1);
}
ここでは、中国語の文字は2つの英語の文字の幅だと思います.完璧主義者なら、jとwとmの幅は違っています.wとmと大文字の部分は中国語の幅と一致しています.この関数の正則はかなりの変更スペースがあります.