A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 伪善者。 中级黑马   /  2014-3-26 17:39  /  935 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 伪善者。 于 2014-3-26 18:55 编辑

请问怎么实现从一个字符串中 可以分别辨识出 字母和 汉字 并把他们分别存入两个char[]中么?
比如 "w我a爱h黑m马c程x序y员" 分别提取出
char[] zimu={'w','a','h','m','c','x','y'}和 char[] hanzi={"我","爱","黑","马","程","序","员"}
请尽量带点注释 谢谢各位前辈感谢各位的回答 我得好好研究下 嘿嘿

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

3 个回复

正序浏览
  1. string str="w我a爱h黑m马c程x序y员";
  2.             char[] zimu = { 'w', 'a', 'h', 'm', 'c', 'x', 'y' };
  3.             char [] hanzi={'我','爱','黑','马','程','序','员'};
  4.             string strZm="abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";//字母字符串
  5.             List<char> zimuList = new List<char>();
  6.             List<char> hanziList = new List<char>();
  7.             
  8.             for (int i = 0; i < str.Length; i++)
  9.             {
  10.                 if (strZm.Contains(str[i]))//如果包含,则分到字母zimuList否则分到hanziList
  11.                 {
  12.                     zimuList.Add(str[i]);
  13.                 }
  14.                 else
  15.                 {
  16.                     hanziList.Add(str[i]);
  17.                 }
  18.             }
  19.             char[]newzimu=new char[zimuList.Count];//定义新的数组
  20.             char[]newhanzi=new char[hanziList.Count];

  21.             for (int i = 0; i < newzimu.Length; i++)
  22.             {
  23.                 newzimu[i]=zimuList[i];
  24.                 Console.WriteLine(newzimu[i]);
  25.             }
  26.             for (int i = 0; i < newhanzi.Length; i++)
  27.             {
  28.                 newhanzi[i] = hanziList[i];
  29.                 Console.WriteLine(newhanzi[i]);
  30.             }
  31.             Console.ReadKey();
复制代码
回复 使用道具 举报
使用字符的ASCII码判断就行
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;

  6. namespace 分离汉字和字母
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             string message = "w我a爱h黑m马c程x序y员";
  13.             List<char> letters = new List<char>();  //用于存储字母的集合
  14.             List<char> Chinese = new List<char>();  //用于存储汉字的集合
  15.             for (int i = 0; i < message.Length; i++)
  16.             {
  17.                 int currentCode = (int)message[i];  //将当前字符转换成ASCII码
  18.                 if (currentCode >19968 && currentCode < 40869)  //汉字的编码范围
  19.                 {
  20.                     Chinese.Add(message[i]);    //加入到汉字集合
  21.                 }
  22.                 else if (currentCode > 96 && currentCode < 123) //字母的编码范围
  23.                 {
  24.                     letters.Add(message[i]);    //加入到字母集合
  25.                 }
  26.             }
  27.             Console.WriteLine("字母:");
  28.             foreach (char letter in letters)
  29.             {
  30.                 Console.WriteLine(letter);
  31.             }

  32.             Console.WriteLine("汉字");
  33.             foreach (char item in Chinese)
  34.             {
  35.                 Console.WriteLine(item);
  36.             }

  37.             Console.ReadKey();
  38.         }
  39.     }
  40. }
复制代码



评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
一个简单的笨方法
  1. string s = "w我a爱h黑m马c程x序y员";
  2.             char[] chchar = s.ToCharArray().Where(r => "abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".Contains(r)).ToArray();// 获取字符
  3.             char[] chhz = s.ToCharArray().Where(r => !"abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".Contains(r)).ToArray();// 获取汉字
  4.             foreach (var v in chchar) // 输出字符
  5.                 Console.Write(v);
  6.             Console.WriteLine();
  7.             foreach (var v in chhz)// 输出汉字
  8.                 Console.Write(v);
复制代码

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马