===============================字符串基本操作================================
  一、C#中字符串的建立过程
    例如定义变量

    strT="Welcome to ";
    strT+="www.cuit.edu.cn";
    程序首先创建一个System.String 类型的对象并初始化为“Welcome
to”。此时编译程度会分配足够的内存来保存这个文本串。并用变量strT来表示这个实例。当执行strT+="www.cuit.edu.cn"时,系
统会创建一个新的实例,并分配足够的内存来保存复合后的文本。然后用变量strT来表示这个新的字符串,旧的字符串被撤消。

  二、字符串处理

    1、从字符串中提取子串 
    StringBuilder 类没有支持子串的方法,因此必须用String类来提取。(关于StringBuilder 类,文末会提到)
    string mystring="My name is ynn."; 
    //Displays "name is ynn." 
    Console.WriteLine(mystring.Substring( 3 )); 
    //Displays "ynn" 
    Console.WriteLine(mystring.Substring( 11,3 ));

    2、比较字符串 
    String 类有四种方法:Compare( )、CompareTo( )、CompareOrdinal( )、Equals( )。 
    Compare( )方法是CompareTo( )方法的静态版本。只要使用“=”运算符,就会调用Equals( )方法,的以Equals( )方法与“=”是等价的。CompareOrdinal( )方法对两个字符串比较不考本地语言与文件。 
    示例: 
    int result; 
    bool bresult; 
    s1="aaaa"; 
    s2="bbbb"; 
    //Compare( )method 
    //result值为“0”表示等,小于零表示 s1 < s2,大于零表示 s1 > s2 
    result=String.Compare(s1,s2); 
    result=s1.CompareTo( s2 ); 
    result=String.CompareOrdinal(s1,s2);

    3.插入子串
    字符串.Insert(插入位置,插入子串) ;
    s.Insert(2,"ab");
    4.移出子串
    字符串.Remove(起始位置,移出数);
    s.Remove(3,2);
    5.替换子串
    字符串.Replace(源子串,替换为);
    s.Replace("-"," ");将-替换为空格
    6.截取子串
    字符串.Substring(截取起始位置,截取个数);
    "abcdef".Substring(2,3);结果为cde

    7.去空格
      myString.Trim(); //同时删除字符串前后的空格
    string userResponse = Console.ReadLine();
    userResponse = userResponse.Trim();//用该命令处理后产生新地变量再赋给此变量:
    if (userResponse.ToLower() == “yes”)
        Console.WriteLine(”OK!”);
    else
        Console .WriteLine (”NO!”);
    myString = myString.Trim(trimChars); //删除所有指定字符
    myString = myString.TrimEnd(); //删除字符串后的空格
    myString = myString.TrimStart(); //删除字符串前的空格

    8.转换大小写
    str.ToLower()转化成小写字母
    str.ToUpper()转化成大写字母
    Char.IsUpper(str,3)//判断一个字符串中的第n个字符是否是大写

    9.拆分字符串
    例1:string[] Strs = myString.Split(' ',3);

//按照空格进行拆分,并且返回前三个字符串,结果在字符串数组里

    例2:Split命令作用是用指定的分隔符分隔字符串,成为子字符串,子字符串赋给数组,作为元素输出

   string myStr = "this is a test.";
            char[] separator ={ ' ' };//'a' a为分隔符,此例为空格分隔符定义一个分隔符数组
            string[] mywords;
            mywords = myStr.Split(separator);
            foreach (string word in mywords)
            {
                Console.WriteLine("{0}", word);
            }
            Console.ReadLine();

  
    10.使字串达到指定长度
    PadLeft()、PadRight() ,如:
    例1:string str1="00";
    str1=str1.PadLeft(3,'1'); //无第二参数为加空格,结果为"100"
      //为字符串添加空格,都是从左向右数字符串的长度进行添加 空格
    例2:

    char[] trimChars ={ ' ', 'e', 's' };//命名一个要被删除的字符的数组
                //Console.WriteLine("{0},{1},{2}", trimChars[0],trimChars[1],trimChars[2]);
                string userResponse = Console.ReadLine();
                userResponse = userResponse.ToLower();
                userResponse = userResponse.Trim(trimChars);
                if (userResponse == "y")
                {
                    Console.WriteLine(".Trim()命令可以删除字符"yes"删除es后变为:{0}", userResponse);
                }
                Console.ReadLine();

    11.得到字符串长度
      len=str.Length;
    12.查找子串
    字符串.IndexOf(子串,查找起始位置) ;
    字符串.LastIndexOf(子串) ;最后一次出现的位置
    str.IndexOf("ab",0);
    13.字符串遍历
    string myString = "This is a test!";
    foreach (char myChar in myString)
    {
        Console.Write("{0}",myChar);
    }

==============================string类&char类==================================

    //string类型变量可以看作char变量的只读数组的使用
    string myString = “A string”;

    //使用数组变量的ToCharArray()命令将string变量myString变量的字符串值赋给
    //char类型的数组myChar为元素
    char[] myChars = myString.ToCharArray();
    //ToCharArray()命令把字符串值转换成char数组元素
    foreach (char myChar in myChars)//读取数组元素
    {
        Console.WriteLine(”{0}”,myChar);//或(myChar)
    }

    //string类型变量可以看作char变量的只读数组的使用
    Console.WriteLine(”请输入要转换的字符串,把其转换为char数组元素”);
    string myString = Console.ReadLine();//从屏幕得到字符串
    Console.WriteLine(”你输入的字符串长度为:{0}”,myString .Length );//获取字符串的长度
    //使用数组变量的ToCharArray()命令将string变量myString变量的字符串值赋给
    //char类型的数组myChar为元素
    char[] myChars = myString.ToCharArray();//ToCharArray()命令把字符串值转换成char数组元素
    foreach (char myChar in myChars)//读取数组元素
    {
        Console.WriteLine(”{0}”,myChar);//或(myChar)
    }

===============================字符串格式化================================

  3.1 格式化数字

    ----------------------------------------------------------------------------
    格式字符    说明和关联属性 
    c、C       货币格式。 
    d、D       十进制格式。 
    e、E       科学计数(指数)格式。 
    f、F       固定点格式。 
    g、G       常规格式。 
    n、N       数字格式。 
    r、R       往返格式,确保将已转换成字符串的数字转换回数字时具有与原数字相同的值。 
    x、X       十六进制格式。

    ----------------------------------------------------------------------------

    double val=Math.PI; 
    Console.WriteLine(val.ToString( ));  //displays 3.14159265358979 
    Console.WriteLine(val.ToString("E"));//displays 3.141593E+000 
    Console.WriteLine(val.ToString("F3");//displays 3.142

    int val=65535; 
    Console.WriteLine(val.ToString("x"));  //displays ffff 
    Console.WriteLine(val.ToString("X"));  //displays FFFF

    Single val=0.123F; 
    Console.WriteLine(val.ToString("p"));  //displays 12.30 % 
    Console.WriteLine(val.ToString("p1"));  //displays 12.3 %

  默认格式化会在数字和百分号之间放入一个空格。定制方法如下: 
  其中NumberFormatInfo类是System.Globalization命名空间的一个成员,因此该命名空间必须导入到程序中。 
    Single val=0.123F; 
    object myobj=NumberFormatInfo.CurrentInfo.Clone( ) as NumberFormatInfo; 
    NumberFormatInfo myformat=myobj as NumberFormatInfo; 
    myformat.PercentPositivePattern=1; 
    Console.WriteLine(val.ToString("p",myformat)); //displays 12.30%; 
    Console.WriteLine(val.ToString("p1",myformat)); //displays 12.3%;

  格式化具有很大的灵活性。下面的例子演示一个没有意义的货币结构: 
    double val=1234567.89; 
    int [] groupsize={2,1,3}; 
    object myobj=NumberFormatInfo.CurrentInfo.Clone( ); 
    NumberFormatInfo mycurrency=myobj as NumberFormatInfo; 
    mycurrency.CurrencySymbol="#"; //符号 
    mycurrency.CurrencyDecimalSeparator=":"; //小数点 
    mycurrency.CurrencyGroupSeparator="_";  //分隔符 
    mycurrency.CurrencyGroupSizes=groupsize; 
    // 输出 #1_234_5_67:89 
    Console.WriteLine(val.ToString("C",mycurrency));

  3.2 格式化日期 
  输出形式取决于用户计算机的文化设置。 
    using System; 
    using System.Globalization; 
    public class MainClass 
    { 
        public static void Main(string[] args)  
        { 
            DateTime dt = DateTime.Now; 
            String[] format = {"d","D","f","F","g","G","m","r","s","t",
"T","u", "U","y","dddd, MMMM dd yyyy","ddd, MMM d ""'""yy","dddd, MMMM
dd","M/yy","dd-MM-yy",}; 
            String date; 
            for (int i = 0; i < format.Length; i++) 
                  { 
                     date = dt.ToString(format[i], DateTimeFormatInfo.InvariantInfo); 
                     Console.WriteLine(String.Concat(format[i], " :" , date)); 
                  } 
            } 
    }

  
    d :07/11/2004    <=======输出 
    D :Sunday, 11 July 2004 
    f :Sunday, 11 July 2004 10:52 
    F :Sunday, 11 July 2004 10:52:36 
    g :07/11/2004 10:52 
    G :07/11/2004 10:52:36 
    m :July 11 
    r :Sun, 11 Jul 2004 10:52:36 GMT 
    s :2004-07-11T10:52:36 
    t :10:52 
    T :10:52:36 
    u :2004-07-11 10:52:36Z 
    U :Sunday, 11 July 2004 02:52:36 
    y :2004 July 
    dddd, MMMM dd yyyy :Sunday, July 11 2004 
    ddd, MMM d "'"yy :Sun, Jul 11 '04 
    dddd, MMMM dd :Sunday, July 11 
    M/yy :7/04 
    dd-MM-yy :11-07-04

  3.3 格式化枚举 
    enum classmen 
    { 
      ynn=1, 
      yly=2, 
      css=3, 
      C++=4 
    }

  获取枚举字符串信息如下: 
    classmen myclassmen=classmen.yly; 
    Console.WriteLine(myclassmen.ToString( ));   //displays yly 
    Console.WriteLine(myclassmen.ToString("d")); //displays 2

  从系统枚举中获取文本人信息如下: 
    DayOfWeek day=DayOfWeek.Friday; 
    //displays "Day is Friday" 
    Console.WriteLine(String.Format("Day is {0:G}",day)); 
    格式化字符串“ G ”把枚举显示为一个字符串。 
  

===============================StringBuilder类=================================
 
  当要进行大规模的字符替换与调整操作时,使用字符串来操作将严重影响性能。在这中情况下就可以用System.Text.StringBuilder类。

 
 StringBuilder类并没有String
类的功能强大,只提供基本的替换和添加和删除字符串中的文本,但它的工作效率非常高,当定义StringBuilder对象时可以指定内存的内存容量,如
果不指定系统就会根据对象初始化时的字符串长度来确定。它有两个主要参数Length和Capacity分别表示字符串的实际长度和字符串占据的内存空间
长度。对字符串的修改就是在这个内存中进行的,大大提高了添加和替换的的效率。
如定义:

  StringBuilder sb=new StringBuilder(”Hello,Welcome”,100);//初始化对象并设置初始容量为100
       sb.Append(” to www.sinory.com”);
       sb.Replace(old,new);//将old替换为new,作用与String.Replace()一样只是不需要在过程中复制字符。

  StringBuilder的成员:
       StringBuilder sb=new StringBuilder(”www.google.com”);//定义初值为www.google.com的对象。
       StringBuilder sb=new StringBuilder(20);//初始化容量为20的空对象。
  另外StringBuilder还有MaxCapacity属性用来限定对象可以使用的最大容量。默认大约是int.MaxValue(20亿)
     可以在使用过程中定义sb.MaxCapacity=value;
     sb.Append()——给当前字符串追加字符串。
     sb.AppendFormat()——添加特定格式的字符串
     sb.Insert()——插入一个子字符串
     sb.Remove()——从当前字符串删除字符
     sb.Replace()——替换字符串中指定的字符
     sb.ToString()——将sb转化为String 对象

C#字符串操作大全的更多相关文章

  1. c语言字符串操作大全

     C语言字符串操作函数 函数名: strcpy 功  能: 拷贝一个字符串到另一个 用  法: char *stpcpy(char *destin, char *source); 程序例: #incl ...

  2. javascript中字符串常用操作总结、JS字符串操作大全

    字符串的操作在js中非常频繁,也非常重要.以往看完书之后都能记得非常清楚,但稍微隔一段时间不用,便会忘得差不多,记性不好是硬伤啊...今天就对字符串的一些常用操作做个整理,一者加深印象,二者方便今后温 ...

  3. JS字符串操作大全

    String对象属性 (1) length属性 length算是字符串中非常常用的一个属性了,它的功能是获取字符串的长度.当然需要注意的是js中的中文每个汉字也只代表一个字符,这里可能跟其他语言有些不 ...

  4. js--javascript中字符串常用操作总结、JS字符串操作大全

    字符串的操作在js中非常频繁,也非常重要.以往看完书之后都能记得非常清楚,但稍微隔一段时间不用,便会忘得差不多,记性不好是硬伤啊...今天就对字符串的一些常用操作做个整理,一者加深印象,二者方便今后温 ...

  5. Java基础(一)-- Java对字符串操作大全

    一.Java字符串类基本概念 在JAVA语言中,字符串数据实际上由String类所实现的.Java字符串类分为两类:一类是在程序中不会被改变长度的不变字符串:二类是在程序中会被改变长度的可变字符串.J ...

  6. python字符串操作大全

    1.去空格 strip() >>> s = 'a b c d ' >>> s.strip() 'a b c d' 2.lstrip() 方法用于截掉字符串左边的空格 ...

  7. Python字符串操作大全(非常全!!!)

    1. python编程里字符串的内置方法(非常全) capitalize() 把字符串的第一个字符改为大写 casefold() 把整个字符串的所有字符改为小写 center(width) 将字符串居 ...

  8. js字符串操作

    javascript中字符串常用操作总结.JS字符串操作大全 String对象属性 (1) length属性 length算是字符串中非常常用的一个属性了,它的功能是获取字符串的长度.当然需要注意的是 ...

  9. C语言字符串操作总结大全

    1)字符串操作 strcpy(p, p1)  复制字符串  函数原型strncpy(p, p1, n)   复制指定长度字符串  函数原型strcat(p, p1)   附加字符串  函数原型strn ...

随机推荐

  1. 【Luogu】P2498拯救小云公主(spfa)

    题目链接 我水爆了- - 容易发现可以把两个圆之间连边,左上为起点右下为终点,最小生成树直到起点跟终点连起来,输出边权/2就行. 然后80. 并不理解为什么这可以转化成spfa求最短路,邻接矩阵暴力跑 ...

  2. 【POJ3294】 Life Forms(SA)

    ...又是TLE,对于单组数据肯定TLE不了,问题是多组的时候就呵呵了... 按height分组去搞,然后判一下是否不属于同一个串... ; var x,y,rank,sa,c,col,h,rec:. ...

  3. 看了就学会之React redux入门示例

    环境准备 为了方便,这里使用create-react-app搭建react环境 create-react-app mydemo 弹出配置 如果需要自定义react的配置,需要运行下面的命令把配置文件弹 ...

  4. BZOJ 3052: [wc2013]糖果公园 | 树上莫队

    题目: UOJ也能评测 题解 请看代码 #include<cstdio> #include<algorithm> #include<cstring> #includ ...

  5. gerrit工具-workflow

    gerrit-workflow

  6. Jquery不同版本共用的解决方案(插件编写)

    最近在为某公司做企业内部UI库,经过研究分析和评审,决定基于Jquery开发,结合Bootstrap插件那简洁,优雅,高效的思想进行插件编写. 但是在编写的过程中遇到一个头疼的问题,就是正在编写的插件 ...

  7. 用ServletContext做一个简单的聊天室

    这里主要是ServletContext的一个特性:ServletContext是一个公共的空间,可以被所有的客户访问.由此可见ServletContext比cookie和session的作用范围要大[ ...

  8. 内部类(inner class)的简单介绍

    本文主要介绍内部类(inner class)的一些基本应用,将从内部类的分类角度,首先对每一个具体内部类进行介绍.主要包括普通的内部类[common inner class].局部内部类[local ...

  9. Java Web 路径问题

    可能在做文件上传或者 图片加载,资源加载 时候用到文件相对服务器地址 System.out.println(request.getRemoteUser()); //客户端用户System.out.pr ...

  10. Springboot+Redis序列化坑

    今天在测试springboot整合redis的时候遇到下面这个坑,百度来百度去发现提示都是ajax的问题,真的是醉了,错误提示如下所示,不信大家可以直接复制百度一下答案是什么(流泪中....),错误如 ...