zoukankan      html  css  js  c++  java
  • 字符串

    字符串特性:不可变性,不管对字符串做什么操作,都会在内存中产生一块新的实例。

     特性:驻留池

    string s1="张三";
    string s2="张三"

    s1和s2指向堆中的同一个引用,为了节省内存

    如果给s2重新赋值为“李四“,s1不会变,因为s2是重新分配的一块空间,就是字符串的不可变性,”张三“不会被GC销毁,因为s1仍然指向”张三“

    字符串方法

    IsNullOrEmpty()  判断字符串是null还是System.String.Empty

    string s="";
    if(string.IsNullOrEmpty(s)){}

    我们可以将一个字符串看作是char类型的只读数组

    ToCharArray()  返回字符数组

    string str="abcdef";
    char[] ch= str.ToCharArray();//字符串转字符数组
    ch[2]=h;
    //char数组转字符串
    string english=new string(ch);
    //字符串可以通过下标访问某个字符
    Console.WriteLine(english[0]);

    ToLower()  转小写

    ToUpper()  转大写

    Equals()  比较两个字符串是否相等

    对于string类型而言,不管是==还是Equals比较的都是值本身

    string s1="aBc";
    string s2="ABc";
    //StringComparison.OrdinalIgnoreCase忽略被比较字符串的大小写
    if(s1.Equals(s2,StringComparison.OrdinalIgnoreCase)){}
    
    Person p1=new Person(){Name="张三",Age=18};
    Person p2=new Person(){Name="李四",Age=18};
    //这两个判断都为false
    if(p1==p2){}
    if(p1.Equals(p2)){}
    Person p3=new Person(){Name="王五",Age=18};
    Person p4=new Person(){Name="王五",Age=18};
    //这两个判断依然为false
    if(p3==p4){}
    if(p3.Equals(p4)){}
    //如果在Person类里重写Equals方法,这个判断就为true了
    if(p3.Equals(p4))
    {
      Console.WriteLine(p3.ToString());//这个对象所在类的命名空间
    }
    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; } } }

    Equals默认比较的是地址,但是我们在自己定义的类中如果用到Equals,都会将Equals进行重写,使之按照我们自己的需求进行比较

    ToString()也可重写

    IndexOf()  第一次出现的位置

    LastIndexOf()    最后一次出现的位置

    string str="Hello World";
    //在字符串中找到o第一次出现的位置,默认从0开始找
    int index=str.IndexOf('o');
    //从下标为2的位置找,包含2
    int index2=str.IndexOf('o',2);
    //最后一次出现的位置
    int index2=str.LastIndexOf('o');

    如果找不到返回-1

    SubString()  截取字符串

    string name="小明今天出去玩,非常高兴";
    int index = name.IndexOf(",");
    //从当前位置截取字符串,默认截到最后
    string str=name.SubString(index+1);

    Split()  分割

    string str="a,b---.      c,d";
    //StringSplitOptions.RemoveEmptyEntries移除分割后数组中的”“空
    str.Split(new char[]{',','-','-'},StringSplitOptions.RemoveEmptyEntries);
    //字符串--->char类型数组 ToCharArray()
    //字符串--->string类型的数组 Split()
    //如果只是开头和结尾有空格,可以使用Trim(),返回的是字符串
    string name="  张三    ";
    name.Trim();
    //参数也可以为char数组,或字符
    string intro=",,,,   大家好,我是小明----";
    intro.Trim(',',' ','-');

    Join()  连接

    string[] name={"阿紫","小红","小白","小明"};
    string str=string.Join("&",name);

    Replace()  替换

    string content="小明,你是个不知羞耻的人";
    if(content.Contains("不知羞耻"))
    {
         content = content.Replace("不知羞耻","****");
    }
  • 相关阅读:
    linux删除/var/log/下面所有日志 如何重新记录日志
    DIV里的内容自动换行
    it冲突:commit your changes or stash them before you can merge. 解决办法
    git切换到远程分支
    【异常】warning: refname 'feature1.3.0' is ambiguous.导致git merge失败
    在此篇文章中,我们将用 15 分钟对 PHP v7.x 版本更改进行简要回顾
    input元素所有type类型及相关作用
    微信自动关闭内置浏览器页面,返回公众号窗口 WeixinJSBridge.call('closeWindow')
    css背景渐变色
    数组的forEach和map和for方法的区别
  • 原文地址:https://www.cnblogs.com/xiaonangua/p/7284613.html
Copyright © 2011-2022 走看看