给定一字符串  “ #I'm a student!  @ someone have 4 'babs'? $”请用C#取出字符串的单词个数。
如果:c++中的话用两个指针p1,p2,开始都取字符串的首地址,然后判断字符串单词个数的时候用p1所指不是字母,p2所指是字母这样取出的count++应该没问题吧。具体判断的条件用ASCII码表里字母的范围?!

解决方案 »

  1.   

    string str="Hello,World";
      char ch;
      for(int i=0;i<str.Length;i++){
         ch=str[i];
      }  需要注意的是ch是unicode字符
      

  2.   

    public class MyClass
    {
    public static void Main()
    {
       string strMessage =@" #I'm a student!  @ someone have 4 'babs'? $";
       string Word;
       char ch;
       int count;
       bool PrevCharFlag;
       
       count = 0;
       Word="";
       PrevCharFlag = false;
       for(int i=0;i<strMessage.Length;i++){
           ch= strMessage[i];
       if(CheckChar(ch)){
       Word+=ch;
       PrevCharFlag = true;
       }
       else{
           if(PrevCharFlag != false){
        count++;
        CON.WL(Word);
        Word="";
            }
    PrevCharFlag=false;
       }
       
       }
       CON.WL("The word count is: {0}",count);
       CON.RL();
    }

    private static bool CheckChar(char ch){
        if(Char.IsLetterOrDigit(ch) ) //此处你可以设定其它条件认为是单词的
    {
       return true;
    }
    else{
       return false;
    }
    }

    }
    #region CON Class
    public class CON
    {

    public static void WL(object text, params object[] args)
    {
    Console.WriteLine(text.ToString(), args);
    }

    public static void RL()
    {
    Console.ReadLine();
    }

    public static void Break() 
    {
    System.Diagnostics.Debugger.Break();
    }}
    #endregion
      

  3.   

    非常感谢  :)我改了下判定方法给你++++++
            private static bool CheckChar(char ch)
            {
                if ((ch<'z'&&ch>'a')||(ch<'Z'&&ch>'A')) //此处你可以设定其它条件认为是单词的
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }