2013年11月19日 星期二

轉 : 利用Byte單位來計算字串長度的幾種做法(Javascript,C#,VB.Net)

http://www.dotblogs.com.tw/puma/archive/2008/08/05/4815.aspx

一般計算字串長度,有下列幾種:
1.計算字元數,不管中文字,英文字都算一個字元
2.計算Byte數,中文字算2個byte,英文字算1個byte
舉例:
字串為:"我是puma"
1.計算字元數:中文字(2),英文字(4),總共(6)
2.計算Byte數:中文字(4),英文字(4),總共(8)
程式語法
C#
string str = "我是puma";

//一般的字中長度計算,中文字(2),英文字(4),總共(6)

Response.Write(str.Length.ToString());

//利用Byte單位來計算字串長度,中文字(4),英文字(4),總共(8)

Response.Write(System.Text.Encoding.Default.GetBytes(str).Length);

VB.Net
Dim str As String = "我是puma"

'一般的字中長度計算,中文字(2),英文字(4),總共(6)
Response.Write(str.Length.ToString())

'利用Byte單位來計算字串長度,中文字(4),英文字(4),總共(8)
Response.Write(System.Text.Encoding.Default.GetBytes(str).Length)

Javascript(小舖Bryan(不來ㄣ)提供)
<script type="text/javascript"> 
//string.Blength() 傳回字串的byte長度 
String.prototype.Blength = function() { 
var arr = this.match(/[^\x00-\xff]/ig); 
return  arr == null ? this.length : this.length + arr.length; 


var str = "我是puma"; 
alert("字元數:"+str.length); //中文字(2),英文字(4),總共(6)
alert("byte數:"+str.Blength()); //中文字(4),英文字(4),總共(8)
</script>