2015年8月5日 星期三

Javascript:計算顯示長度

先前寫好php版本,今天需要一個Javascript的版本。查找了好久都沒有完整的。大多只是判斷中英文。 謝謝這篇這篇文章給我的靈感!!

程式碼:

<script type="text/javascript">
function utf8DisplayLength(str){
 var length = 0; //單一字符的長度
 var displayLength = 0; //單一字符的顯示寬度
 var totalDisplayLength = 0; //全部寬度
 for (var i = 0; i < str.length; i++){
  var chr = str.charAt(i);
  if(/^[\u0000-\u007f]$/.test(chr)) {
   length = 1;
   displayLength = 1;
  }
  else if(/^[\u0080-\u07FF]$/.test(chr)) {
   length = 2;
   displayLength = 1;
  }
  else if(/^[\u0800-\uFFFF]$/.test(chr)) {
   length = 3;
   displayLength = 2;
  }
  else if(/^[\u010000-\u10FFFF]$/.test(chr)) {
   length = 4;
   displayLength = 2;
  }
  totalDisplayLength += displayLength;
 }
 return totalDisplayLength;
}

var str='一二三śЯ';
var result = utf8DisplayLength(str);
document.write(result);
</script>

結果是 8。

沒有留言:

張貼留言