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

 所以说,在.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:\a\b\c\e\亚廷\d\f\苍老师苍老师.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:\Users\SpringRain\Desktop\电话.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

C#string类型总结的更多相关文章

  1. ElasticSearch 5学习(9)——映射和分析(string类型废弃)

    在ElasticSearch中,存入文档的内容类似于传统数据每个字段一样,都会有一个指定的属性,为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成字符串值,Elasticsearc ...

  2. 每日一记-mybatis碰到的疑惑:String类型可以传入多个参数吗

    碰到一个觉得很疑惑的问题,Mybatis的parameterType为String类型的时候,能够接收多个参数的吗? 背景 初学Mybatis的时候,看的教程和书籍上都是在说基本的数据类型如:int. ...

  3. 把《c++ primer》读薄(3-1 标准库string类型初探)

    督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 问题1:养成一个好习惯,在头文件中只定义确实需要的东西 using namespace std; //建议需要什么再using声 ...

  4. 【原创】Java和C#下String类型中的==和equals的原理与区别

    一.Java下 1.几个例子 public static void main(String[] arge) { String str1 = new String("1234"); ...

  5. String类型的属性和方法

    × 目录 [1]属性 [2]对象通用方法 [3]访问字符方法[4]字符串拼接[5]创建子串方法[6]大小写转换[7]查找子串位置[8]正则匹配方法[9]去除首尾空格[10]字符串比较 前面的话 前面已 ...

  6. String类型传值以及对象传值

    package Virtual; class Stan{ String mm = "hello"; } class Virtual { public static void mai ...

  7. java动手动脑和课后实验型问题String类型

    1.请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? true true false 总结: 使用new关键字创建字符串对象时, 每次申请 ...

  8. java内存分配和String类型的深度解析

    [尊重原创文章出自:http://my.oschina.net/xiaohui249/blog/170013] 摘要 从整体上介绍java内存的概念.构成以及分配机制,在此基础上深度解析java中的S ...

  9. javascript类型系统——字符串String类型

    × 目录 [1]定义 [2]引号 [3]反斜线[4]特点[5]转字符串 前面的话 javascript没有表示单个字符的字符型,只有字符串String类型,字符型相当于仅包含一个字符的字符串 字符串S ...

随机推荐

  1. 解读ASP.NET 5 & MVC6系列(13):TagHelper

    在新版的MVC6中,微软提供了强大的TagHelper功能,以便让我们摆脱如下的臃肿代码: @Html.LabelFor(model => model.FullName) @Html.EditF ...

  2. [LeetCode] Valid Phone Numbers 验证电话号码

    Given a text file file.txt that contains list of phone numbers (one per line), write a one liner bas ...

  3. 《MySQL 必知必会》读书总结

    这是 <MySQL 必知必会> 的读书总结.也是自己整理的常用操作的参考手册. 使用 MySQL 连接到 MySQL shell>mysql -u root -p Enter pas ...

  4. 浏览器内核控制Meta标签说明文档【转】

    背景介绍 由于众所周知的情况,国内的主流浏览器都是双核浏览器:基于Webkit内核用于常用网站的高速浏览.基于IE的内核用于兼容网银.旧版网站.以360的几款浏览器为例,我们优先通过Webkit内核渲 ...

  5. 用vue.js学习es6(六):Iterator和for...of循环

    一.Iterator (遍历器)的概念: 遍历器(Iterator)就是这样一种机制.它是一种接口,为各种不同的数据结构提供统一的访问机制.任何数据结构只 要部署Iterator接口,就可以完成遍历操 ...

  6. CSS Icon 项目地址 小图标-用css写成的

    http://cssicon.space/#/icon/focus 这是所有用css写成的  小图标  右侧有 html和css代码

  7. asp.net mvc 权限过滤和单点登录(禁止重复登录)

    1.权限控制使用controller和 action来实现,权限方式有很多种,最近开发项目使用控制控制器方式实现代码如下 /// <summary> /// 用户权限控制 /// < ...

  8. ApacheCommons的Java公共类库(实现如Log这些功能)

    Apache Commons是Apache软件基金会的项目,曾隶属于Jakarta项目.Commons的目的是提供可重用的.开源的Java代码. 解释:http://baike.baidu.com/i ...

  9. CodeForces 24D Broken Robot

    题意:n*m的棋盘,一个机器人在(i,j)处,每次等概率地停在原地,向左移动一格,向右移动一格,向下移动一格(不能移出棋盘).求走到最后一行所需期望步数.n<=1000,m<=1000 一 ...

  10. Data Binding使用技巧

    Data Binding 根据变量,自动赋值到各widget. How 1.编写layout文件,这里的layout为: act_data_bind_demo.xml 这里需要先准备变量 在具体的wi ...