c#中字符串的groupby,统计元素

利用groupby,可以不需要像c语言一样,不停写循环在内部进行判断。

通过分组方式,既能够统计重复元素,也算另类意义上的“元素切片”。

另外似乎可以通过正则表达式来完成相同工作,不过暂时还没学正则。

自己摸索了一段时间,比如我想统计 字符串 ss = “abctoaaabqty”,字符‘a’出现了多少次?

字符串分组

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 知识测试
{
    class Program
    {
        static void Main(string[] args)
        {
           
            string ss = "abctoaaabqty";

             var sg=  ss.GroupBy(x=>x=='a');
          
            foreach (var item in sg)
           {
                Console.WriteLine(item.Key);
                Console.WriteLine("------");
                foreach (var a in item)
                {
                    Console.WriteLine(a);
                }
            }
            Console.Read();
        }
    }
}

c#中字符串的groupby,统计元素_第1张图片

字符串数组分组

另一种情况虽然也是单纯的字符串,形如string ss = “abc to aa abq ty”,但我想根据“a”开头划为一组,“t”开头划为一组。

这种时候就不能用单个字符来划分了(因为单个字符划分后的结果也是单个字符),而是要先转换为字符串数组(我要的结果是字符串形式)。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 知识测试
{
    class Program
    {
        static void Main(string[] args)
        {
           
            string ss = "abc to aa abq ty";

            var sg=  ss.Split(' ').GroupBy(x=>x.Substring(0,1));
           
            foreach (var item in sg)
           {
                Console.WriteLine(item.Key);
                Console.WriteLine("------");
                foreach (var a in item)
                {
                    Console.WriteLine(a);
                    Console.WriteLine("\n");
                }
            }
            Console.Read();
        }
    }
}

c#中字符串的groupby,统计元素_第2张图片
另外中文字符串也是可以分组的:

string ss = "王五 李南 王二 李东";

var sg = ss.Split(' ').GroupBy(x => x.Substring(0, 1));

这里要注意,在很多语言里,一个中文字符就算是2个字符长度。
但在C#中,string里包含的中文字符只占一个字符长度。
c#中字符串的groupby,统计元素_第3张图片

错误写法

在一开始的时候,没能理解groupby,我尝试过以下形式:

var sg = ss.Split(' ').GroupBy(x => x="王二");

结果是一组都分不出来。
c#中字符串的groupby,统计元素_第4张图片
如果使用==判断,意思是与字符串xx相等的分一组,不等的分另一组。
这种方式适合指定的数据,有多个重复的情况。
比如“王二“恰好拥有多个联系电话,地址等情况。

var sg = ss.Split(' ').GroupBy(x => x=="王二");

c#中字符串的groupby,统计元素_第5张图片

你可能感兴趣的:(微软,c#)