通过正则表达式可以解决此问题。因为叠加字符串使用StringBuilder 对象性能更高.
/// <summary>
/// 验证字符串里面是否有汉字,并截取字符串里面的汉字列表
/// </summary>
/// <param name="word"></param>
public static string IsChina(string word,out StringBuilder strbu)
{
Regex reg = new Regex(@"[/u4e00-/u9fa5]");//汉字正则的表达式
StringBuilder builder = new StringBuilder();//定义返回汉字的StringBuilder对象
StringBuilder stringBuilder = new StringBuilder();//定义返回的字符串的StringBuilder对象
if (reg.IsMatch(word))
{
Console.WriteLine("有汉字" + word);
for (int i = 0; i < word.Length; i++)
{
if (reg.IsMatch(word[i].ToString())) //如果是汉字,把该对象存放到返回汉字的StringBuilder对象
{
builder.Append(word[i]);
}
else
{
stringBuilder.Append(word[i]); //把该对象存放到返回的字符串的StringBuilder对象
}
}
}
strbu = stringBuilder;
return builder.ToString();
}
public static void Main(string[] args)
{
StringBuilder strBuilder;
Console.WriteLine("截取的汉字:" + IsChina("天天123哈哈ss嘿嘿ss糖糖s",out strBuilder));
Console.WriteLine("截取的字符串为:" + strBuilder);
}
运行结果如下:
有汉字天天123哈哈ss嘿嘿s
截取的汉字:天天哈哈嘿嘿糖
截取的字符串为:123sssss