asp.net怎么获取字符串中前几个字符
举例说明:比如说,字符串是“abadd11”,我获取前四个字符是abad;如果字符串是“你好吗?”,我获取前四个字符是你好;不是用Substring(),望高手指点迷津....
举例说明:比如说,字符串是“abadd11”,我获取前四个字符是abad;如果字符串是“你好吗?”,我获取前四个字符是你好;不是用Substring(),望高手指点迷津...
补充说明一下:用Substring(),获取的一个英文字母和一个汉字都算一个长度,所以不对。。。 展开
补充说明一下:用Substring(),获取的一个英文字母和一个汉字都算一个长度,所以不对。。。 展开
展开全部
把字符串转换成字符数组
char[] arr= "你好吗?abadd11".ToCharArray();
定义一个变量int x=0,然后遍历数组,判断每个字符,如果是英文或者10进制数字char[].IsLetterOrDigit,那么x+1,否则是中文x+2,然后string zfc = zfc +char[] ,就是合并字符串。最后如果要取4位,那么当x=4的时候return。这样中文就是一个字符算2位,英文和数字一个字符算1位
char[] arr= "你好吗?abadd11".ToCharArray();
定义一个变量int x=0,然后遍历数组,判断每个字符,如果是英文或者10进制数字char[].IsLetterOrDigit,那么x+1,否则是中文x+2,然后string zfc = zfc +char[] ,就是合并字符串。最后如果要取4位,那么当x=4的时候return。这样中文就是一个字符算2位,英文和数字一个字符算1位
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个是问题是一个很令人头疼的问题啊!
一个汉字等于一个字符,一个字符等于两个字节;一个英文字母(不区分大小写,半角)等于一个字节;
/// <summary>
/// 自定义截取字符串方法
/// </summary>
/// <param name="str">原始字符串</param>
/// <param name="index">起始位</param>
/// <param name="count">截取字节长度</param>
/// <returns></returns>
public string subStr(string str,int index,int count)
{
string retStr=string.Empty;
byte[] strs = System.Text.Encoding.Default.GetBytes(str);
retStr = System.Text.Encoding.Default.GetString(strs, index, count);
return retStr;
}
调用:
private void button1_Click(object sender, EventArgs e)
{
string str = "aBcAde李鸿章";
string retStr=subStr(str, 6, 2);
MessageBox.Show(retStr);
}
这个方法灵活性不太好,仅供参考,希望自己改进!
一个汉字等于一个字符,一个字符等于两个字节;一个英文字母(不区分大小写,半角)等于一个字节;
/// <summary>
/// 自定义截取字符串方法
/// </summary>
/// <param name="str">原始字符串</param>
/// <param name="index">起始位</param>
/// <param name="count">截取字节长度</param>
/// <returns></returns>
public string subStr(string str,int index,int count)
{
string retStr=string.Empty;
byte[] strs = System.Text.Encoding.Default.GetBytes(str);
retStr = System.Text.Encoding.Default.GetString(strs, index, count);
return retStr;
}
调用:
private void button1_Click(object sender, EventArgs e)
{
string str = "aBcAde李鸿章";
string retStr=subStr(str, 6, 2);
MessageBox.Show(retStr);
}
这个方法灵活性不太好,仅供参考,希望自己改进!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
private string GetString(string str1)
{
if (System.Text.Encoding.GetEncoding("GB2312").GetByteCount(str1) > str1.Length)
return str1.Substring(0,2);
else
return str1.Substring(0,4);
}
由于工作休息时间有限,以上可以简单实现该功能,不过还有更好的方法,例如用正则表达式。。。。希望对你有用。。。
{
if (System.Text.Encoding.GetEncoding("GB2312").GetByteCount(str1) > str1.Length)
return str1.Substring(0,2);
else
return str1.Substring(0,4);
}
由于工作休息时间有限,以上可以简单实现该功能,不过还有更好的方法,例如用正则表达式。。。。希望对你有用。。。
追问
那如果字符串中有中文有英文了?例如“你ab好c吗?”
追答
这个就需要用正则 复杂实现了。。。还有一种实现方法 就是将字符串 中的 每一个字符取出来,做一下判断 是否是字还是字节 够四位就返回。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这与其说是四个字符倒不如说是四个字节,可以先转换成字节数组,然后再转换成字符
不过转换的时候又很多技巧,需要非常注意
不过转换的时候又很多技巧,需要非常注意
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不是用substring(),你的意思是自己写方法?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询