2009年6月8日 星期一

判斷字串內是否有中文字

這是個老問題了,今天做一個完整的 demo

由於 dotnet framework 內的 string 儲存的是 unicode, 因此我們將字元寫到檔案內,看看哪些字碼是中文字。

      Stream stream = File.Open(@"C:\temp\all.txt", FileMode.Create, FileAccess.Write, FileShare.Read);
      using (StreamWriter sw = new StreamWriter(stream, System.Text.Encoding.Unicode))
        for (int i = 256; i < 65536; i++) sw.WriteLine("{0}:{1}", i, (char)i);

打開 all.txt,發現第一個中文字是 19968 的「一」,最後的中文字是40869的「龥」。

image image

所以呢,所有的中文字都在「一」跟「龥」的範圍之內。
最後,要如何判斷字串內是否有中文字呢?這當然是 regular expression 的工作了。程式碼如下

      Regex ex = new Regex("[一-龥]");
      bool isMatched = ex.IsMatch("jjsss 中文 ksks");  //isMatched will be true

PS: 特別符號,日文等,算不算中文字呢?如果連這些都考慮進來,就有得玩了。跟您的客戶 check 一下吧!

image image

沒有留言:

Share with Facebook