c#怎么判断字符串中包含汉字?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#怎么判断字符串中包含汉字?相关的知识,希望对你有一定的参考价值。

如何用c#语句判断一个字符串中是否包含汉字?

1、用ASCII码判断

  在 ASCII码表中,英文的范围是0-127,而汉字则是大于127,具体代码如下:

   

string text = "是不是汉字,ABC,柯乐义";
for (int i = 0; i < text.Length; i++)

    if ((int)text[i] > 127)
  
      Console.WriteLine("是汉字");
  else
      Console.WriteLine("不是汉字");
  

2、用汉字的 UNICODE 编码范围判断

  汉字的 UNICODE 编码范围是4e00-9fbb,具体代码如下:

 

 string text = "是不是汉字,ABC,keleyi.com";
char[] c = text.ToCharArray();
for (int i = 0; i < c.Length;i++)

    if (c[i] >= 0x4e00 && c[i] <= 0x9fbb)
    
       Console.WriteLine("是汉字");
   else
        Console.WriteLine("不是汉字");
    

3、用正则表达式判断

  用正则表达式判断也是用汉字的 UNICODE 编码范围,具体代码如下:

   

 string text = "是不是汉字,ABC,keleyi.com";
for (int i = 0; i < text.Length; i++)

    if (Regex.IsMatch(text[i].ToString(), @"[\\u4e00-\\u9fbb]+1quot;))
    
        Console.WriteLine("是汉字");
    else
        Console.WriteLine("不是汉字");
    

参考技术A using System.Text.RegularExpressions;//先导入这个使用正则表达式

Regex reg = new Regex(@"[\u4e00-\u9fa5]");//正则表达式
string str="smile 卡";
if (reg.IsMatch(str))

Console.WriteLine("有汉字");

else

Console.WriteLine("没汉字");
本回答被提问者和网友采纳
参考技术B using System.Text.RegularExpressions;//导入这个使用正则表达式的命名空间
Regex reg = new Regex(@"[\u4e00-\u9fa5]");//汉字正则的表达式。
string text1="";
console.write("请输入:");
string text1=console.Readline();
if (reg.IsMatch(text1))//判断是不是汉字的方法,

console.write(“你输入法的是汉字\n”);

else

console.write("你输入的不是汉字“);

同学,如果你想要关于正则的方法,与及表达式的话, 我可以发给你。。。
参考技术C Regex regex = new Regex("^[\u4e00-\u9fa5]+$"); 参考技术D 看字符所占的字节

C# 压缩文件。如何提取或跳过名称中包含无效字符的文件?

【中文标题】C# 压缩文件。如何提取或跳过名称中包含无效字符的文件?【英文标题】:C# ZipFile. How to extract or skip file with invalid characters in the name? 【发布时间】:2016-05-09 19:00:55 【问题描述】:

我在 .zip 存档中有一个名为 “The Shooting Star”.jpeg 的文件。 当我尝试通过ZipFile.ExtractToDirectoryZipArchiveEntry.ExtractToFile 提取它时,我得到System.ArgumentException: Illegal characters in path 异常。

此类文件已通过 WinRar 成功解压。

有没有办法使用 ZipFile 避免异常并成功提取文件或至少跳过此类文件?

更新:

上传上述存档:The Archive

【问题讨论】:

为什么你的文件名中有引号?您不能在标准 Windows 文件名中包含这些内容,因此应该很清楚问题出在哪里。 @DangerZone,这些是特殊符号,而不是 " 引号,所以它们可以工作。 啊,没注意到。 你还有什么奇怪的字符吗?我无法使用相同的 ZipFile.ExtractToDirectory() 方法复制任何同名文件的问题。 @DangerZone,我没有。我专门测试了这些:“”字符是问题所在。 Windows 资源管理器也无法提取名称中的文件。如果这很重要,我正在使用 Windows 7。 【参考方案1】:

您可以重新格式化源名称以从源名称中删除非法字符。

 var illegalChars = Path.GetInvalidFileNameChars();
 var destName = sourceName.Where(x => !illegalChars.Contains(x)).Aggregate("", (current, x) => current + x);

sourceName 是存档中的文件名,然后您可以使用 ZipArchiveEntry.ExtractToFile 并给它一个更正的目标文件名。

【讨论】:

我根本无法访问存档中的文件,这就是问题所在。

以上是关于c#怎么判断字符串中包含汉字?的主要内容,如果未能解决你的问题,请参考以下文章

lua怎么判断字符串中含有汉字

C#中判断字符串中包含某个字符

C#中如何判断字符串中包含某个字符?

ORACLE怎样判断一个串中包含字串,如C#中的contain

怎么判断string字符串中包含某个字符

如何用正则表达式判断文本中包含有汉字