• C#string类型总结


    字符串的特性:不可变性,每对字符串做拼接或者重新赋值之类的操作,都会在内存中产生一个新的实例。

     所以说,在.Net平台下,如果你对一个字符串进行大量的拼接赋值等操作,会产生大量的垃圾。
     
     ---->我们可以将字符串看做是char类型的只读数组。
      --->当我们以索引的方式去访问某一个字符串的时候,获得是char类型
    空和null有什么区别,空在内存上开空间了,null没有
    字符串的常用函数
     1、ToCharArray():将一个字符串转换成一个char类型的数组。
     2、new string(char[] chs):根据一个char类型的数组返回一个字符串。
     3、ToUpper():返回字符串的大写形式.
     4、ToLower():返回字符串的小写形式.
     5、Equals(,stringcomprasion......):比较两个字符串是否相等,可以忽略大小写。
     (lessonOne.Equals(lessonTwo,StringComparison.OrdinalIgnoreCase)) 
    Equal和Tostring都是object下的虚方法,都可以重写
     6、Split():分割字符串,返回字符串类型的数组。
    string[] nerstr=str.Split(new char[] { ' ', ',', '-' }, StringSplitOptions.RemoveEmptyEntries);
     7、Contains():判断字符串中是否包含指定的字符串
     8、Replace():将老字符串替换成新字符串
     9、StartsWith():判断字符串是否以指定的字符串开始
     10、EndsWith():判断字符串是否以指定的字符串结束
     11、Trim():去掉字符串两端的字符。但是,不能去掉字符串中间的字符。
     12、TrimStart():
     13、TrimEnd():
     14、Substring():截取指定的字符串,可以选择截取的长度。
     15、IndexOf():取某一个字符在字符串中第一次出现的位置,如果没有,则返回-1。
     16、LastIndexof():去某一个字符在字符串中最后一次出现的位置,如果没有,则返回-1。
     17、静态函数
      --->string.IsNullOrEmpyt()判断指定的字符串是否为空或者为null
      --->string.Join():将指定的分隔符插入数组每个元素的后面,返回一个字符串,默认最后一个元素后面没有。
    18:等号和Equals的区别
    对于string类型而言,不管是等号还是Equals比较的都是值本身。
                //Equals默认比较的是地址,但是我们在自己定义的类中如果用到Equals,都会将Equals进行重写,使之按照我们自己的需求进行比较
    拼接字符串
    //string str = string.Empty;
                //StringBuilder sb = new StringBuilder();
                ////00:00:00.1022297
                //Stopwatch sp = new Stopwatch();

    提供一组方法和属性,可用于准确地测量运行时间。

                //sp.Start();
                //for (int i = 0; i < 100000; i++)
                //{
                //    //str += i;
                //    sb.Append(i); //追加
                //}
                //sp.Stop();
                //Console.WriteLine(sp.Elapsed);

    获取当前实例测量得出的总运行时间。Elapsed

                //Console.WriteLine(sb.ToString()); 
                StringBuilder sb = new StringBuilder();
     
    举例: #region new string() ToCharArray()
                //string str = "abcdef";
                ////str[0] = 'b';
     
                //////字符串--->char数组(可读可写)
                ////char[] chs = str.ToCharArray();
                ////chs[0] = 'b';
                //////将改变后的char数组再次转换成字符串
                ////str = new string(chs);
     
                //Console.WriteLine(str[0]);
                #endregion
     
                #region Length属性
                //Console.WriteLine("请输入你人生中最深刻老师的名字");
                //string name = Console.ReadLine();
                //Console.WriteLine("这个老师的名字有{0}个字",name.Length);
                #endregion
     
                #region ToUpper() ToLower() Equals()
                //Console.WriteLine("请输入你喜欢的课程");
                //string lessonOne = Console.ReadLine();
                ////转换成大写
                ////lessonOne = lessonOne.ToUpper();
                ////转换成小写
                ////lessonOne = lessonOne.ToLower();
                //Console.WriteLine("请输入你喜欢的课程");
                //string lessonTwo = Console.ReadLine();
                ////lessonTwo = lessonTwo.ToUpper();
                ////lessonTwo = lessonTwo.ToLower();
                //if (lesssonsonOne.Equals(leTwo,StringComparison.OrdinalIgnoreCase))
                //{
                //    Console.WriteLine("你们喜欢的课程相同");
                //}
                //else
                //{
                //    Console.WriteLine("你们喜欢的课程不相同");
                //}
                #endregion
     
                #region Split() 字符串的分割
                ////string str = "abc   ,,,d, ,--,ef,,--  0987";
                //////将一个字符串中没用的东西去掉
                ////string[] strNew = str.Split(new char[] { ' ', ',', '-' }, StringSplitOptions.RemoveEmptyEntries);
     
     
                ////练习:从日期字符串("2008-08-08")中分析出年、月、日;2008年08月08日。
                ////让用户输入一个日期格式如:2008-08-08,你输出你输入的日期为2008年1月2日
     
                //string date = "2008-08-08";// "2008年08月08日";
                //string[] newDate = date.Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries);
     
                //date = newDate[0] + "年" + newDate[1] + "月" + newDate[2] + "日";
                //Console.WriteLine(date);
                //Console.ReadKey();
                #endregion
     
                #region Contains()判断是否包含  Replace()替换
                //Console.WriteLine("请输入你的评论");
                //string input = Console.ReadLine();
                ////1、判断评论中是否包含敏感词
                //if (input.Contains("老赵"))
                //{
                //    //2、进行替换
                //    input = input.Replace("老赵", "***");
                //}
                //Console.WriteLine(input);
                //Console.ReadKey();
                #endregion
                #region StartsWith() EndsWith()
                //string str = "举头望明月,我叫郭德纲";
                ////if (str.StartsWith("头"))
                ////{
                ////    Console.WriteLine("是的");
                ////}
                ////else
                ////{
                ////    Console.WriteLine("不是");
                ////}
                //Console.WriteLine(str.EndsWith("举头望明月,我叫郭德纲") ? "是的" : "不是");
                #endregion
                #region Trim() TrimEnd() TrimStart()
                /*string str = "----  ---1   2---3-  --  ----";
                ////str = str.Trim(); 去掉字符串两边的空格
                ////str = str.TrimStart(); 去掉字符串前边的空格
                ////str = str.TrimEnd();去掉后面的空格
                str = str.Trim('-',' ');
                //string[] strNew = str.Split(new char[] { '-', ' ' }, StringSplitOptions.RemoveEmptyEntries);
                  Console.Write(str);
                   Console.ReadKey(); */
                #endregion
     
                #region Substring() 截取字符串
                string str = "今天我要是上课睡觉了,我以后就单身一辈子";
                str = str.Substring(12,2);
                Console.WriteLine(str);
                Console.ReadKey();
                #endregion
     
     
                #region LastIndexof()找到某一个字符在字符串中最后一次出现的位置
                //string path = @"c:ace亚廷df苍老师苍老师.avi";
     
                ////找到某一个字符在字符串中最后一次出现的位置
                ////获得 \在路径中最后一次出现的位置
                //int index = path.LastIndexOf('\');
     
                //string fileName = path.Substring(index + 1);
     
                //Console.WriteLine(fileName);
                //Console.ReadKey();
                #endregion
     
                #region IndexOf()
                  /* string str = "举头望明头头月,我叫头郭头德纲";
     
                   int index = str.IndexOf('a', 3);
     
                   Console.WriteLine(index);
                   Console.ReadKey();*/
                #endregion
                //Console.WriteLine(string.IsNullOrEmpty(null) ? "yes" : "no");
     
              /*  string[] names = { "张三", "李四", "王五", "赵六", "田七" };
                //张三|李四|王五|赵六|田七
                string str = string.Join("|", names);
                Console.WriteLine(str);
                Console.ReadKey();*/
     
     //课上练习2:接收用户输入的一句英文,将其中的单词以反序输出。      “I love you"→“I evol uoy"
                //string str = "Chinese food is best food";
                ////获得要翻转的单词 按照空格分割
                //string[] strNew = str.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                //for (int i = 0; i < strNew.Length; i++)
                //{
                //    char[] chs = strNew[i].ToCharArray();
                //    for (int j = 0; j < chs.Length / 2; j++)
                //    {
                //        char temp = chs[j];
                //        chs[j] = chs[chs.Length - 1 - j];
                //        chs[chs.Length - 1 - j] = temp;
                //    }
     
                //    strNew[i] = new string(chs);
                //}
                ////把空格安插到字符串数组中每个元素的后面
                //str = string.Join(" ", strNew);
                //Console.WriteLine(str);
                //Console.ReadKey();
      //课上练习4:把csv文件中的联系人姓名和电话显示出来。简单模拟csv文件,csv文件就是使用,分割数据的文本,输出:
     
     
                //string[] lines = File.ReadAllLines(@"C:UsersSpringRainDesktop电话.txt", Encoding.Default);
                //for (int i = 0; i < lines.Length; i++)
                //{
                //    //将双引号替换成""
                //    lines[i] = lines[i].Replace(""", "");
                //    //将逗号和分号去掉
                //    string[] linesNew = lines[i].Split(new char[] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries);
                //    Console.WriteLine("姓名:" + linesNew[0] + linesNew[1] + " 电话:" + linesNew[2]);
                //}
     /* string str = "一日,天气炎热。两香蕉在路上散步,一香蕉抱怨道:“好热阿,好热阿。”遂脱衣。另一香蕉遂倒";
                int index = str.IndexOf("香蕉");
                Console.WriteLine("香蕉第一个出现的位置{0}",index);
                int count=1;
                while(index!=-1)
                {
                    count++;
                    index = str.IndexOf("香蕉", index + 1);
                    if(index==-1)
                    {
                        break;
                    }
                    Console.WriteLine("第{0}次出现的香蕉的位置是{1}",count,index);
                }
                Console.ReadKey();*/
     
      等号和Equals的区别
      Person p1 = new Person() { Name = "刘德华", Age = 18 };
      Person p2 = new Person() { Name = "刘德华", Age = 18 };
    //if (p1.Equals(p2)) //这是不相等的Equals默认比较的是地址,
                //{
                //    Console.WriteLine("相等");
                //}
                //else
                //{
                //    Console.WriteLine("不相等");
                //}
     class Person
        {
            public string Name { get; set; }
            public int Age { get; set; }
       }
    如果让他们比较值那就:::重写
     public override bool Equals(object obj)
            {
                Person person = obj as Person;
                if (this.Name == person.Name && this.Age == person.Age)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
    StringBuilder sb = new StringBuilder();
                //sb.Append("123");
                //sb.Append("张三");
    Console.Writeline(sb);显示123张三
     
     
    Person p1 = new Person() { Name = "刘德华", Age = 18 };
      class Person
        {
            public string Name { get; set; }
            public int Age { get; set; }
         }
     Console.WriteLine(p1.ToString());//这个对象所在的类的命名空间
     
    原文地址:http://www.cnblogs.com/lrzr/archive/2015/05/05/4480687.html
  • 相关阅读:
    Python 抓取 iphone13 pro 线下店供货信息并发送到钉钉机器人,最后设置为定时任务
    crontab 解决 mac 下通过 crontab 设置了 Python 脚本的定时任务却无法运行
    Python 好用第三方库 isort
    Python 接入钉钉机器人
    Effective Python(2) 遵循 PEP 8 风格指南
    fastapi(65) 路由函数指定了 response_model,在返回自定义 JSONResponse 时, 不会限制它返回的数据结构
    Mysql 如何决定用 datetime、timestamp、int 哪种类型存储时间戳?
    Effective Python(1) 查询自己使用的Python版本
    fastapi(66) 修改 uvicorn 的日志格式
    重要通知!重要通知!不是广告!不是广告!
  • 原文地址:https://www.cnblogs.com/zhou1304187196/p/4481322.html
Copyright © 2020-2023  润新知