myString.Substring(0, 3);我要中文算2个字,英文算一个字,怎么做? string myString="a啊a啊"myString=myString.Substring(0, 3)我要得到的myString是 “a啊”怎么做?也就是 “啊”算2个长度 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 c#与其它语言不同的是,string 类型每一个字符都是占两个字节的,所以myString=myString.Substring(0, 3)取到的是“a啊a”,在c#的string里,基本不用考虑中英字节问题。 楼主把编码转换成unicode再截取即可。 用Encoding转化为UTF-8,然后取得以后转化为gb2312 Encoding转化为UTF-8,截取后会截到半个中文字吗? /// <summary> /// 获取字符串的总数(以英文字符为准,中文等字符按2英文字符计算) /// </summary> /// <param name="str">字符串</param> /// <returns>返回字符串的总数</returns> public int GetStringCount(string str) { Regex regex = new Regex("[\u4e00-\u9fa5]+", RegexOptions.Compiled); char[] stringChar = str.ToCharArray(); StringBuilder sb = new StringBuilder(); int nLength = 0; for(int i = 0; i < stringChar.Length; i++) { if (regex.IsMatch((stringChar[i]).ToString())) { sb.Append(stringChar[i]); nLength += 2; } else { sb.Append(stringChar[i]); nLength = nLength + 1; } } return nLength; } 默认就是unicode 直接myString.Substring(0, 2)不行? dot Net使用的字符串String是Unicode编码的;它也是以Unicode编码的形式显示字符串。string[] btemp;btemp=System.Text.Encoding.UTF8.GetBytes(temp);string ttemp=System.Text.Encoding.GetEncoding("GB2312").GetString(btemp); SubString直接截取即可如果你想实现,在一行中放置指定长度的串,那么可能汉字排头和英文排头时显示就不一样了比如显示的一行中可容纳20个字符 “fffffffffsdf地……” 这样是正常显示的但如果是“发射点法似的十分上十分是…………”,也还是可正常获得的,但要在两行中显示所以这时你要进行处理了。不是简单的SubString能完成的吧…… 请教各位猛男们一个问题 wcf如何实现类qq那样的udp通信 如何把绑定数据库的repeater控件中显示的ID号换成名称 如何进行强制类型转换,我试了很多方法,还是不行!! 怎样把字节数组保存为文件? 使用sql语句查找的问题 如何做基于VS2005的新编程语言的IDE,类似VS.PHP 如何配置实现aspx在地址中显示自行定义的后缀?比如.abc 如何抓住我的程序中用户所有的按键? C#中类Convert没有ToFloat方法怎么办??? 怎样在程序里把word文档直接转换成图片 DataGrid如何绑定多个表?
/// 获取字符串的总数(以英文字符为准,中文等字符按2英文字符计算)
/// </summary>
/// <param name="str">字符串</param>
/// <returns>返回字符串的总数</returns>
public int GetStringCount(string str)
{
Regex regex = new Regex("[\u4e00-\u9fa5]+", RegexOptions.Compiled);
char[] stringChar = str.ToCharArray();
StringBuilder sb = new StringBuilder();
int nLength = 0;
for(int i = 0; i < stringChar.Length; i++)
{
if (regex.IsMatch((stringChar[i]).ToString()))
{
sb.Append(stringChar[i]);
nLength += 2;
}
else
{
sb.Append(stringChar[i]);
nLength = nLength + 1;
}
}
return nLength;
}
直接myString.Substring(0, 2)
不行?
符串。string[] btemp;btemp=System.Text.Encoding.UTF8.GetBytes(temp);
string ttemp=System.Text.Encoding.GetEncoding("GB2312").GetString(btemp);