对字符和字符串的一些总结

  • 字符

  字符的定义非常简单:

char ch='L';

  char类的常用方法和说明:

  

  转义字符的使用:

            char a = '\'';

  C#中常用的转移字符及说明:

  

  • 字符串

    比较字符串

      1)Compare方法

        Compare方法用来比较两个字符串是否相等,它有很多重载方法,其中最常用的两种形式如下:

            int Compare(string strA, string strB)
            int Compare(string strA, string strB, bool ignorCase)        

         ignore的值若是true,那么在比较字符串的时候就会忽略大小写的区别。

         返回值是一个32位有符号整数,指示两个比较数之前的词法关系。(0表示相同)

string.Compare(str1, str2);

       比较字符串并不是比较字符串长度的大小,而是比较字符串在英文字典中的位置。按照字典的排序规则,判断两个字符串的大小,在英文字典中前面的单词小于后面的单词。

      2)CompareTo方法

        CompareTo与Compare方法类似,都可以比较两个字符串是否相等,不同的是CompareTo方法以实例本身与指定的字符串比较,其语法如下:

        public int CompareTo(string strB)

         strB表示与此字符串相比较的字符串

        返回值与Compare相同。

      3)Equals方法

        有两种用法:

            str1.Equals(str2);
            string.Equals(str1, str2);

        返回值为bool.

    格式化字符串

      在C#中,string类提供了一个静态的Format方法,用于将字符串数据格式化成指定的格式,语法格式如下: 

     public static string Format(string foramt, object obj);

      用法:

            string newstr = String.Format("{0} And {1} are friends",str1,str2);

      另外C#提供了一种用于日期时间的格式规范:

      

      示例:

            DateTime dt = DateTime.Now;
            string strDate = string.Format("{0:D}", dt);
            Console.WriteLine(strDate);

      

   String.Format的多格式定义:(内容来自:https://www.ezloo.com/2008/11/string_format.html)
         这里所谓的多格式是指一个格式项中可以定义1~3个格式参数,每种格式参数用分号(;)隔开。带2个和3个格式参数的格式项所对应的值必须是数值类型的,这样才能判断是否为负数、正数、零。
    带1个格式参数:

//以科学计数法的格式输出
double p1 = 1000000;
Response.Write(String.Format("{0:E2}", p1));

    带2个格式参数:

/*当格式项对应的值为非负数,则选择第一种格式;值为负数则选第二种格式*/
double p1 = 10000;
double p2 = -2420.50;
Response.Write(String.Format("{0:#,###0.00;#,###0.000;}<BR>", p1));
Response.Write(String.Format("{0:#,###0.00;#,###0.000;}", p2));

    带3个格式参数:

/*当格式项对应的值为正数则选择第一张格式;
负数则为第二中格式;
值等于零则为第三种格式*/
1double p1 = 10000;
double p2 = -2420.50;
double p3 = 0.00;
Response.Write(String.Format("{0:#,###0.00;#,###0.000;#,###0.0000}<BR>", p1));
Response.Write(String.Format("{0:#,###0.00;#,###0.000;#,###0.0000}<BR>", p3));
Response.Write(String.Format("{0:#,###0.00;#,###0.000;#,###0.0000}", p2));

    补充:
    {0:N2} 中的N3,f3表示格式化之后数据的类型以及小数的位数。如:N2表示带2个小数的数字;
    与此类似:

N或者n  表示  数字
F或者f   表示  固定点
E或者e  表示  科学计数法
D或者d  表示  十进制数
X或者x  表示  十六进制
G或者g  表示  常规
C或者c  表示  货币

    截取字符串  

            string str2 = str1.Substring(0, 1);

    分割字符串

            string[] strNews = strOld.Split(',');

    插入和填充字符串

      插入和填充字符串分别用到string类中的Insert方法和PadLeft/PadRight方法。

      1)插入字符串 

            string str2 = str1.Insert(0, "C");

      2)填充字符串(在字符串的左右侧进行字符填充)

        以PadLeft方法为例,语法格式如下:

            public string PadLeft(int totalWidth, char paddingChar);

        totalWidth表示结果字符串中的字符数。

            string str3 = str1.PadLeft(str1.Length + 1, '0');

     复制字符串

      1)Cpoy

        和‘=’一样啊

        string str2 = string.Copy(str1);

      2)CopyTo

        这个详细点,语法格式:   

        public void CopyTo(int sourceIndex, char[] destination, int destinationIndex, int count);

        sourceIndex:需要复制的起始位置

        destination:目标字符数组

        destinationIndex:目标数组开始存放的位置

        count:指定要复制的字符的个数

            string str1 = "123456";
            char[] myChar = new char[5];
            str1.CopyTo(1, myChar, 0, 5);
            Console.WriteLine(myChar);

         

      替换字符串Replace

      语法格式:

           public string Replace(char Ochar,char NChar)
           public string Replace(string OValue,string NValue)

      O待替换的,N替换后的新的

      demo:

            string oldstr = "Hello Girl!";
            string Ostr = "Girl";
            string Nstr = "Boy";
            string newstr = oldstr.Replace(Ostr, Nstr);
            Console.WriteLine(newstr);
            Console.Read();

      result:

      删除字符串Remove

      语法格式

            public string Remove(int StartIndex);
            public string Remove(int StratIndex, int count);

      demo

            string str1 = "Hello Girl!";
            string str2 = "Hello Girl!";
            string str3 = str1.Remove(5);
            string str4 = str2.Remove(0, 5);
            Console.WriteLine(str3);
            Console.WriteLine(str4);
            Console.Read();

      result:

     可变字符串

      可变字符串在C#中用 StringBuilder 类表示,它位于 System.Text 命名空间下。之所以说 StringBuilder 对象的值是可变的,是因为在通过追加、移除、替换或插入字符而创建它后可以对它进行修改。

      StringBuilder 类的构造函数:

            public StringBuilder();
            public StringBuilder(int capacity);
            public StringBuilder(string value);
            public StringBuilder(string value, int capacity);
            public StringBuilder(int capacity, int maxCapacity);
            public StringBuilder(string value, int startIndex, int length, int capacity);

        capacity:StringBuilder对象的建议起始大小

        value:字符串,包含用于初始化 StringBuilder 对象的子字符串

        maxCapacity:当前字符串可包含的最大字符数

        stratIndex value:中子字符串开始的位置

        length:子字符串中的字符数

            StringBuilder SBuilder = new StringBuilder("Hey Girl!");

        StringBuilder中的常用方法

        

        demo:

            int Num = 18000;
            StringBuilder SBuilder = new StringBuilder("Hey Girl!",100);//初始化
            SBuilder.Append("Be Careful! ");//追加到末尾
            Console.WriteLine(SBuilder);
            SBuilder.AppendFormat("This is cost {0:C}! ", Num);//指定格式追加到末尾
            Console.WriteLine(SBuilder);
            SBuilder.Insert(0, "Leon says: ");//插入
            Console.WriteLine(SBuilder);
            SBuilder.Remove(10, SBuilder.Length - 10);//删除索引10以后的字符串
            Console.WriteLine(SBuilder);
            SBuilder.Replace("Leon", "Sarry");//替换
            Console.WriteLine(SBuilder);
            Console.Read();

      

       String和StingBuilder的区别

            string a = "AA" + "BB";
            StringBuilder b = new StringBuilder();
            b.Append("AA");
            b.Append("BB");

 

 

 

         上面的代码分别使用string类和StringBuilder类连接字符串,但这两种方法在内存中的操作是不同的,第一种方法在内存中有3个sting 变量(“AA”,"BB","AABB");而第二种方法在内存中操作时只有一个“AABB”变量,所以它们的性能是完全不同的。

        当程序中需要大量对某个字符串进行操作时,应该考虑用StingBuilder类处理,避免产生太多的临时对象。当程序只是对某个字符串进行一次或几次操作时,采用string即可。

     正则表达式

      语法如下:

            public static bool IsMatch(string input, string pattern);

 

       demo:

            string mail = "xxx@microsoft.com";
            if (Regex.IsMatch(mail, @"\w+@\w+\.\w{1,3}"))
                Console.WriteLine("Correct mail fromat");
            else
                Console.WriteLine("Wrong mail fromat");
            Console.Read();

 

       

 

posted @ 2018-01-30 17:46  yangsir+  阅读(463)  评论(0)    收藏  举报