项目中有一个地方需要检测用户的输入,而且客户要求不能输入中文。限制只能输入中文的方法比较多,主要是以下的方法:

1、检测每个字符的Ascii ,判断是否在 255 以内;

2、用正则表达式。eg: [^/x00-/xff]

以下就是用 2 来实现的:

 

using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Please enter the data.");

            string strTest = Console.ReadLine();

            while(strTest != null)
            {
                if (strTest.Trim().ToLower().Equals("stop") )
                {
                    break;
                }

                IsChinese(strTest);

                Console.WriteLine("/nPlease enter the data.");
                strTest = Console.ReadLine();
            }
           
        }

        /// <summary>
        /// 检查是否为汉字
        /// </summary>
        /// <param name="str">需要检查的字符串 </param>
        /// <returns>true:字符串中有汉字 </returns>
        /// 实现流程:
        ///     1、构造正则匹配表达式
        ///     2、判断是否有中文
        private static bool IsChinese(string str)
        {
            string strChinesePatterns = "[^/x00-/xff]";
            System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(strChinesePatterns);
            System.Text.RegularExpressions.MatchCollection mch = reg.Matches(str, 0);
            if (mch.Count > 0)
            {
                foreach(Match mach in mch)
                    Console.WriteLine(string.Format("{0} = {1} ", mach.Index.ToString(), mach.Value));

                Console.WriteLine(string.Format("[ {0} ] contains {1} chinese.", str, mch.Count.ToString()));

                return true;
            }
            else
            {
                Console.WriteLine("No chinese.");
                return false;
            }
        }
    }
}

posted on 2007-06-13 21:35  孤剑  阅读(199)  评论(0编辑  收藏  举报