应无所住,而生其心
排名
3
文章
317
粉丝
22
评论
14
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

c#根据中文拆分字符串

6356人阅读 2019/2/10 14:51 总访问:5182009 评论:0 收藏:0 手机
分类: .NET


例如字符串 : net core使用EF之DB First

拆分后应该为:net core ,使用,EF,之,DB First


方法1:先找到字符串中的中文,然后根据中文在循环拆分字符串

  1.   string key = "net core使用EF之DB First";
  2.   //先找到所有的中文
  3.   List<string> chs = new List<string>();
  4.   Regex reg = new Regex("[\u4e00-\u9fa5]+");
  5.   foreach (Match v in reg.Matches(key))
  6.   chs.Add(v.Value);
  7.   //然后根据中文来截取
  8.   List<string> needstr = new List<string>();//存放截取后的
  9.   for (int i = 0; i < chs.Count(); i++)
  10.   {
  11.      string item = chs[i];
  12.      string[] substr = key.Split(item);
  13.      if (!string.IsNullOrWhiteSpace(substr[0]))
  14.      {
  15.        needstr.Add(substr[0]);//存放一下前半部分
  16.      }
  17.      needstr.Add(item);//存放一下自己
  18.      if (i == chs.Count - 1)//已经是最后一次了,直接放!
  19.      {
  20.        if (!string.IsNullOrWhiteSpace(substr[1]))
  21.        {
  22.          needstr.Add(substr[1]);
  23.        }
  24.      }
  25.      else
  26.      {
  27.        key = substr[1];//把需要截取的变成后半部分,以便于用于在下一次截取
  28.      }
  29.   }

效果如下:


方法2:先找到字符串中的中文所在的位置,然后在根据中文位置循环拆分字符串

  1.   string key = "net core使用EF之DB First";
  2.             //先找到中文所在的位置
  3.             List<int> chpois = new List<int>();
  4.             char[] testbyte = key.ToArray();
  5.             for (int i = 0; i < testbyte.Length; i++)
  6.             {
  7.                 //找到中文所在的位置
  8.                 if (testbyte[i] >= 0x4E00 && testbyte[i] <= 0x9FA5)
  9.                 {
  10.                     chpois.Add(i);
  11.                 }
  12.             }
  13.             //开始截取
  14.             //.............





欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价