public static string GetString(string str, int length)
{
int i = 0, j = 0;
foreach(char chr in str)
{
if((int)chr > 127)
{
i += 2;
}
else
{
i ++;
}
if (i > length)
{
str = str.Substring(0, j) + "...";
break;
}
j ++;
}
return str;
}
用这个
{
int i = 0, j = 0;
foreach(char chr in str)
{
if((int)chr > 127)
{
i += 2;
}
else
{
i ++;
}
if (i > length)
{
str = str.Substring(0, j) + "...";
break;
}
j ++;
}
return str;
}
用这个
你是想登陆时中文和英文长度限制一样?
还是中文算两个英文算一个?
你贴出的代码是客户端代码(javascript),作用只是检查用户名字符的有效性。
hui1202(骨灰) 的代码是服务端代码(C#)。
楼主要在客户端检查还是在服务端检查?方法一:(客户端的javascript代码)//函数功能:检查字符串长度(英文算一个,中文算两个)
//参数说明:s是待检查的字符串,n是限制字数
//返回值:s的长度超过n就返回false,否则返回true
function CheckLength(s,n)
{
for(var i=0; i<s.length; i++)
{
if(s.charCodeAt(i)>255)
n-=2;
else
n--;
}
if(n<0)
return false;
else
return true;
}方法二:(服务端的C#代码)//函数功能:检查字符串长度(英文算一个,中文算两个)
//参数说明:s是待检查的字符串,n是限制字数
//返回值:s的长度超过n就返回false,否则返回true
bool CheckLength(string s, int n)
{
for(int i=0; i<s.Length; i++)
{
if((int)s[i]>255)
n-=2;
else
n--;
}
if(n<0)
return false;
else
return true;
}
if(CheckLength(document.getElementById("user_name").value,6))
alert("通过。");
else
alert("字符超过6个字了。");在服务端调用:
if(CheckLength(Request.Form["user_name"],6))
//通过。
else
//字符超过6个字了。
长度是字符数 字符是4字节还是双字节看编码问题了
不过以后都是 UNICODE和UTF8用的最广泛 这个问题不用太操心
而且对于数据库来说 已经普遍采用字符数控制长度
不是按照字节算了如果需要操作通信端口比如 COM口或者自己写通信协议才需要计算这个
但是有些情况就需要按字节数来计算长度了,比如:在SQL Server里有一个字段:类型varchar(5)(这是单字节可变字符字型,双字节则是nvarchar),此字段可以存放5个英文或是2个半的中文,这种情况下就不能存放“abc中国”了,会报错,“abc中国”是7字节。
所以,在这种情况下就可按字节数来检查长度是否超出了。
利用正则判断。