判断中英文数字等混合字符串的截取固定长度值的字符串 博客分类: 其他扩展知识 J#
该方法适用余很多中英文混合的长度的字符串截取,比如,一个固定长度是4个中文字的长度的名字,如:“倾颜戏羽”,这个是固定了4个中文字的名字,而我要用英文代替,是不是要8个英文字母,所有,用length属性,就只能截取4个英文字母,下面这个方法就可以解决吧中文字转换成英文长度去自动判断截取固定长度,如果最后一个字符值能放入一个英文,而你要放一个中文,他会省略中文。思想提供给你,你自己看看吧。
protected void Button1_Click(object sender, EventArgs e)
{
this.txtnew.Text = null;//新的字符串赋值处。
string oldstr = this.txtstr.Text.Trim(); //要判断的字符串
int leng =int.Parse(this.txtlength.Text.Trim()); //截取多少长度
this.txtnew.Text= CutString(oldstr, leng); //调用下面方法
}
//总字符占多少个英文的长度,str是指要判断的字符串。 length是以一个中文字=两个英文字,转化为英文的总长度
public string CutString(string str, int length)
{
string substr = str.Trim();
int i = 0, j = 0, k = 0,a=0;//i字符长度,j长度和,k字符个数,a中间的英文字符个数
foreach (char chr in substr)
{
if ((int)chr > 127)
{
i = 2;
}
else
{
i = 1;
a = a + 1;
}
j = j + i;
k++;
if (length % 2 == 1 && i == 2)
{
if (a % 2 == 1)
{
if (j >= length)
{
substr = substr.Substring(0, k);
break;
}
}
else if (a % 2 == 0)
{
if (j >= length)
{
k = k - 1;
substr = substr.Substring(0, k);
break;
}
}
}
else if (length % 2 == 0 && i == 2)
{
if (a % 2 == 1)
{
if (j >= length)
{
k = k - 1;
substr = substr.Substring(0, k);
break;
}
}
else if (a % 2 == 0)
{
if (j >= length)
{
substr = substr.Substring(0, k);
break;
}
}
}
else
{
if (j >= length)
{
substr = substr.Substring(0, k);
break;
}
}
}
return substr;
}