none
请问:如何区分windows forms richtextbox的内容中包含的是中文汉字还是英文字母? RRS feed

  • 问题

  • 请问:如何区分windows forms richtextbox的内容中包含的是中文汉字还是英文字母?

    因为要将richtextbox的内容分行打印输出,涉及到一个中文汉字与英文字母的长度不一致,即造成了每行的长度不一致

    于是,想判断每行中实际英文字母/中文汉字的个数,然后调节一下输出

    问题是,我怎么进行区分 richtextbox1->SelectedText (richtextbox1->SelectionLength = 1;)的内容为中文汉字还是英文字母?

    谢谢各位了哈~~~~~~~

    2010年9月5日 20:09

答案

  • 算了,还是我给个自己的解决方案吧

    因为个人能力有限,只能曲线解决——把richtextbox1->Text 存为"stack.txt",然后反复读取进行操作

     char c = 0;
     fp = fopen("stack.txt","rb");
     while ((!feof(fp))&&(c != 10)){				// 遇到换行字符或者文件结束则退出
    	 fread(&c,1,1,fp);
    	 if((Count_characters + Count_letters) < 44){		// 设定一行的宽度为 44 字节
    		 if (c < 0){				// 汉字
    	 		 Count_characters++;
    		 }
    		 else {					// 字符(非换行)
    			 Count_letters++;
    		 }
    	 }
     }
     fclose(fp);
    
    
    

    各位高手可能觉得以上做法比较幼稚,恳请高手不吝赐教了,呵呵

    暂且把这个设为解决答案吧,毕竟我就是这么用的

    • 已标记为答案 小外行 2010年9月18日 7:47
    2010年9月18日 7:46

全部回复

  • 英文字母char都小于等于0x7F(signed char > 0),汉字的char都大于等于0x80(signed char < 0)
    0xBAADF00D
    2010年9月6日 3:47
    版主
  • 你说的是ASCII码吧?

    关键是我是初入行,不知道怎么提取字符的好

    还有就是,我试过了,MS汉字的值是小于“0”的值的~~~~~~

    恳请高手给段小例程,我细细学哈

    2010年9月6日 9:50
  • 比如你现在文字已经存到char x[0x100]中了,也可能是wchar_t类型,看你的设置了。

    if(x[0] < 0)就是汉字,两个类型都是一样的,小于0就是汉字


    0xBAADF00D
    2010年9月6日 15:00
    版主
  • 可以这样吧。。

    char a;

    if((a>='a')&&(a<='z')||(a>='A')&&(a<='Z'))//是字母

    else 非字母

    不过这样也不一定可以,只能判断非字母,其他的众多字符并不能区别!!!!!!

     

    2010年9月12日 20:58
  • 算了,还是我给个自己的解决方案吧

    因为个人能力有限,只能曲线解决——把richtextbox1->Text 存为"stack.txt",然后反复读取进行操作

     char c = 0;
     fp = fopen("stack.txt","rb");
     while ((!feof(fp))&&(c != 10)){				// 遇到换行字符或者文件结束则退出
    	 fread(&c,1,1,fp);
    	 if((Count_characters + Count_letters) < 44){		// 设定一行的宽度为 44 字节
    		 if (c < 0){				// 汉字
    	 		 Count_characters++;
    		 }
    		 else {					// 字符(非换行)
    			 Count_letters++;
    		 }
    	 }
     }
     fclose(fp);
    
    
    

    各位高手可能觉得以上做法比较幼稚,恳请高手不吝赐教了,呵呵

    暂且把这个设为解决答案吧,毕竟我就是这么用的

    • 已标记为答案 小外行 2010年9月18日 7:47
    2010年9月18日 7:46