如何按字节数截取字符串? 下有字符串:str="你好welcome"我想要前5个字节的字符,也就是"你好w"。请问如何处理? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 str = str.Substring(0, 5); private static Encoding _encoding = System.Text.Encoding.GetEncoding("Shift_Jis");public static string SubstringByte(string text, int startIndex, int length){ byte[] bytes = _encoding.GetBytes(text) ; return _encoding.GetString(bytes, startIndex, length) ;} /// <summary>/// 截取字符串(适用于中英文混合)/// </summary>/// <param name="str">原字符串</param>/// <param name="len">长度</param>/// <returns></returns>public static string CutString(string str,int len){str = str.Trim();byte[] myByte = System.Text.Encoding.Default.GetBytes(str); if(myByte.Length>len){string result = "";for(int i=0;i<str.Length;i++){byte[] tempByte=System.Text.Encoding.Default.GetBytes(result);if(tempByte.Length<len){result += str.Substring(i,1);}else{break;} }return result+"...";}else{return str;}} 刚刚上面的是日文系统的,简体中文是下面的private static Encoding _encoding = System.Text.Encoding.GetEncoding("GB18030");public static string SubstringByte(string text, int startIndex, int length){ byte[] bytes = _encoding.GetBytes(text) ; return _encoding.GetString(bytes, startIndex, length) ;} 这样的结果会是 “你好wel”吧 把Encoding换成unicode的public static string SubstringByte(string text, int index, int length){ if (text == null || text.Trim() == "" || index > length - 1) { return text; } byte[] bytes = Encoding.Unicode.GetBytes(text); return Encoding.Unicode.GetString(bytes, index, length);} C#中线程的使用问题 vs2008文件打包 wince 下串口组件有哪些 仿真软件 关于系统右键的简单问题 Function错误 怎样才能把编译后的C#.NET程序转到别的PC机上运行? 急求一个c#在线答题页面代码 关于DataReader问题,求大神指导 C# 如何分别改变comboBox控件的高度(height)与项高度(itemheight) 装箱时碰到的问题 如果有多个子窗体,第一个窗体最大化了,第2个窗体就算把最大化禁掉,出来的时候还是最大化的。。。
public static string SubstringByte(string text, int startIndex, int length)
{
byte[] bytes = _encoding.GetBytes(text) ;
return _encoding.GetString(bytes, startIndex, length) ;
}
/// 截取字符串(适用于中英文混合)
/// </summary>
/// <param name="str">原字符串</param>
/// <param name="len">长度</param>
/// <returns></returns>
public static string CutString(string str,int len)
{
str = str.Trim();
byte[] myByte = System.Text.Encoding.Default.GetBytes(str);
if(myByte.Length>len)
{
string result = "";
for(int i=0;i<str.Length;i++)
{
byte[] tempByte=System.Text.Encoding.Default.GetBytes(result);
if(tempByte.Length<len)
{
result += str.Substring(i,1);
}
else
{
break;
}
}
return result+"...";
}
else
{
return str;
}
}
private static Encoding _encoding = System.Text.Encoding.GetEncoding("GB18030");
public static string SubstringByte(string text, int startIndex, int length)
{
byte[] bytes = _encoding.GetBytes(text) ;
return _encoding.GetString(bytes, startIndex, length) ;
}
吧
{
if (text == null || text.Trim() == "" || index > length - 1)
{
return text;
}
byte[] bytes = Encoding.Unicode.GetBytes(text);
return Encoding.Unicode.GetString(bytes, index, length);
}