一、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. javascript中字符串常用操作整理

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

  2. 线程安全使用(四) [.NET] 简单接入微信公众号开发:实现自动回复 [C#]C#中字符串的操作 自行实现比dotcore/dotnet更方便更高性能的对象二进制序列化 自已动手做高性能消息队列 自行实现高性能MVC WebAPI 面试题随笔 字符串反转

    线程安全使用(四)   这是时隔多年第四篇,主要是因为身在东软受内网限制,好多文章就只好发到东软内部网站,懒的发到外面,现在一点点把在东软写的文章给转移出来. 这里主要讲解下CancellationT ...

  3. Python3 与 C# 面向对象之~继承与多态 Python3 与 C# 面向对象之~封装 Python3 与 NetCore 基础语法对比(Function专栏) [C#]C#时间日期操作 [C#]C#中字符串的操作 [ASP.NET]NTKO插件使用常见问题 我对C#的认知。

    Python3 与 C# 面向对象之-继承与多态   文章汇总:https://www.cnblogs.com/dotnetcrazy/p/9160514.html 目录: 2.继承 ¶ 2.1.单继 ...

  4. LoadRunner中字符串的操作

    LoadRunner中字符串的操作 LoadRunner中常用的字符串操作函数有:                strcpy(destination_string, source_string); ...

  5. python中numpy矩阵运算操作大全(非常全)!

    python中numpy矩阵运算操作大全(非常全) //2019.07.10晚python矩阵运算大全1.矩阵的输出形式:对于任何一个矩阵,python输出的模板是:import numpy as n ...

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

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

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

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

  8. javascript中字符串常用操作总结

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

  9. Linux中shell文件操作大全

    1.创建文件夹#!/bin/shmkdir -m 777 "%%1" 2.创建文件#!/bin/shtouch "%%1" 3.删除文件#!/bin/shrm ...

随机推荐

  1. Mongodb基础 学习小结

    MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能 ...

  2. Django框架(十八)—— drf:序列化组件(serializer)

    序列化组件 # 模型层 from django.db import models class Book(models.Model): nid = models.AutoField(primary_ke ...

  3. 【Idea】idea中编译后无法提示错误信息的解决方案

  4. Linux驱动开发常用调试工具---之内存读写工具devmem和devkmem【转】

    转自:https://blog.csdn.net/gatieme/article/details/50964903 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原 ...

  5. JS高阶---闭包面试题

    [面试题1] 答案:The Window 分析: 本案例里,不存在闭包. 条件: .函数嵌套(满足) .内部函数调用外部函数变量(没有) 综上所述,该例中不存在闭包 [面试题2] 答案:My Obje ...

  6. 剖析linux内核中的宏-----------offsetof

    offsetof用于计算TYPE结构体中MEMBER成员的偏移位置. #ifndef offsetof#define offsetof(TYPE, MEMBER) ((size_t) &((T ...

  7. linux基础-ssh服务

    SSH ssh 服务是实现管路服务器的一种方式: 本地管理(安装系统,故障修复),ssh 远程连接 linux 可以是实现远程连接的方式:ssh 命令 windows 可以实现远程连接方式: xshe ...

  8. k8s集群搭建 2019

    参考,https://github.com/qxl1231/2019-k8s-centos 事实上k8s集群的搭建很简单,笔者在搭建的过程中遇到的主要问题是镜像无法下载的问题. 如果发现教程中提供的镜 ...

  9. LG5200 「USACO2019JAN」Sleepy Cow Sorting 树状数组

    \(\mathrm{Sleepy Cow Sorting}\) 问题描述 LG5200 题解 树状数组. 设\(c[i]\)代表\([1,i]\)中归位数. 显然最终的目的是将整个序列排序为一个上升序 ...

  10. LG2512/BZOJ1045 「HAOI2008」糖果传递 中位数

    问题描述 LG2512 BZOJ1045 题解 这是一个链状问题的环状版本. 问题最终变为给定数轴上的\(n\)个点,找出一个到他们的距离之和尽量小的点,而这个点就是这些数中的中位数. 网络流24题的 ...