===============================字符串基本操作================================
  一、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. synflood 模拟工具

    synflood 模拟工具 来源 https://blog.csdn.net/wuzhimang/article/details/54581117 因项目需要,要对主流的几家抗DDoS设备做测评,当然 ...

  2. Lights inside 3D Grid LightOJ - 1284 (概率dp + 推导)

    Lights inside 3D Grid LightOJ - 1284 题意: 在一个三维的空间,每个点都有一盏灯,开始全是关的, 现在每次随机选两个点,把两个点之间的全部点,开关都按一遍:问k次过 ...

  3. POJ3345 Bribing FIPA 【背包类树形dp】

    题目链接 POJ 题解 背包树形dp板题 就是读入有点无聊,浪费了很多青春 #include<iostream> #include<cstdio> #include<cm ...

  4. 洛谷 P4171 [JSOI2010]满汉全席 解题报告

    P4171 [JSOI2010]满汉全席 题目描述 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的材料透过满族或是汉族的料理方式,呈现在數量繁多的菜色之中.由于菜色众多而繁杂,只有极少數博学多闻技艺高 ...

  5. 【CF Round 439 C. The Intriguing Obsession】

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...

  6. 解决:dubbo找不到dubbo.xsd报错

    构建dubbo项目的时候会遇到: Multiple annotations found at this line: - cvc-complex-type.2.4.c: The matching wil ...

  7. P2625 豪华游轮 (背包$dp$,数学)

    题目链接 Solution 贼有意思的一个题目. 可以发现阻止我们走的更远的就是那些需要反向走的路程. 然后发现当角度越接近 \(180^\circ\) ,对我们最终的答案则更优. 所以先是一个背包把 ...

  8. spring in action 学习笔记二:aop的理解

    一: aop的思想的来在哪里? 一个系统一般情况下由多个组件组成,而每一个组件除了干自己的本职工作以外,有时还会干一些杂活(如:日志(logging).事务管理(transaction manager ...

  9. classpath: spring 中的查找方式

    Spring可以通过指定classpath*:与classpath:前缀加路径的方式从classpath加载文件,如bean的定义文件.classpath*:的出现是为了从多个jar文件中加载相同的文 ...

  10. div盒子模型(一图胜千言)

    offsetLeft 获取的是相对于父对象的左边距 left 获取或设置相对于 具有定位属性(position定义为relative)的父对象 的左边距 如果父div的position定义为relat ...