zoukankan      html  css  js  c++  java
  • 看视频学编程之C#中字符串及字符串的操作

    ------- Windows Phone 7手机开发.Net培训、期待与您交流! -------

     字符串

    C#中单个字符用单引号包含就是char类型,‘a’,单引号中放且只能放一个字符。(ASCII码)

    单个字符也可以表示为字符串,(字符串可看作是char数组)
    还可以有长度为0的字符串。null和""的区别,String.IsNullOrEmpty
    使用s.Length属性来获得字符串中的字符个数——  (字符串长度)
    string可以看做是char的只读数组。char c = s[1];。
    C#中字符串有一个重要的特性:不可变性,字符串一旦声明就不再可以改变。所以只能通过索引来读取指定位置的char,不能对指定位置的char进行修改。
    如果要对char进行修改,那么就必须创建一个新的字符串,用s. ToCharArray()方法得到字符串的char数组,对数组进行修改后,
    调用new string(char[])这个构造函数来创建char数组的字符串。一旦字符串被创建,那么char数组的修改也不会造成字符串的变化。 
     
    常见疑问:
     
    string s = "abc";s="123",s这不是可变的吗? 
    要区分变量名和变量指向的值的区别。程序中可以有很多字符串,然后由字符串变量指向他们,变量可以指向其他的字符串,
    但是字符串本身没有变化。字符串不可变性指的是内存中的字符串不可变,而不是变量不变。 
    string s1="hello";     string s10 = s1;
    s10指向s1指向的字符串,而不是s10指向s1,哪怕s1以后指向了其他内存,那么s10还是指向"hello"——字符串是引用类型,传递的是引用,指向实际值的地址
     
    string类常用函数
     
    ToLower():得到字符串的小写形式。
    注意字符串是不可变的,所以这些函数都不会直接改变字符串的内容,而是把修改后的字符串的值通过函数返回值的形式返回。
    s.ToLower()与s=s.ToLower()
    ToUpper():得到字符串的大写形式;
    Trim()去掉字符串两端的空白(不会去掉中间的)。
    s1.Equals(s2, StringComparison.OrdinalIgnoreCase),两个字符串进行比区分大小写的比较。
    —— StringComparison枚举值;OrdinalIgnoreCase比较方式!!         返回true则s1跟s2相同。
    string s2 = string.Format("{0}年{1}月{2}日", year, month, day); 
    string s1 = string.Join("|", values);//第一个参数是string类型分隔符
     
    字符串的分割
     
    string[] Split(params char[] separator):将字符串按照指定的分割符分割为字符串数组;
    string[] Split(char[] separator, StringSplitOptions options)将字符串按照指定的char分割符
    分割为字符串数组( options 取RemoveEmptyEntries的时候移除结果中的空白字符串);
    string[] Split(string[] separator, StringSplitOptions options)将字符串按照指定的string分割符分割为字符串数组。
     
    字符串函数(2)
     
    字符串替换:string Replace(string oldValue, string newValue)将字符串中的出现oldValue的地方替换为newValue。例子:名字替换。
    取子字符串:string Substring(int startIndex),取从位置startIndex开始一直到最后的子字符串;
    string Substring(int startIndex, int length),取从位置startIndex开始长度为length的子字符串,如果子字符串的长度不足length则报错。
    案例:截取字符串前5个,string s2 = s1.Substring(0, Math.Min(s1.Length, 5));//取字符串的长度和5中的最小值来截取。谁小取谁。
    bool Contains(string value)判断字符串中是否含有子串value
    bool StartsWith(string value)判断字符串是否以子串value开始;
    bool EndsWith (string value)判断字符串是否以子串value结束;
    int IndexOf(string value):取子串value第一次出现的位置。
     
     ------------------------------------------------------------------------------------------------------------------------------
     
    StringBuilder sb=new StringBuilder()可以创建一个可变长字符串。
     
    当把一个字符串变量赋给另一个字符串变量时,会得到内存中同一个字符串的两个引用,
    但与引用类型在常见的操作上又有区别。当你修改其中一个字符串的时候,
    会创建一个全新的String对象,其引用的原字符串并不会改变,因而另一个字符串变量的值不变。
     
    当我们创建了字符串对象a,它的值是“1234”,当我们再创建一个值为“1234”的字符串对象
    b时它不会再去分配一块内存空间,而是直接指向了a在内存中的地址。
     
     
     
     
     
  • 相关阅读:
    LCA问题
    CSP2019 J组 游记
    树的直径
    动态规划-背包问题
    Diworth定理
    扫描线算法
    线段树2:区间乘法实现
    线段树1:区间查询和区间加法
    Sys.WebForms.PageRequestManagerParserErrorException: 常见的原因是:通过调用Response.Write()修改相应时,将启用响应筛选器、HttpModules或服务器追踪
    10 套华丽的 CSS3 按钮推荐
  • 原文地址:https://www.cnblogs.com/cctt/p/3141764.html
Copyright © 2011-2022 走看看