博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【读书笔记】C#高级编程 第九章 字符串和正则表达式
阅读量:5104 次
发布时间:2019-06-13

本文共 2629 字,大约阅读时间需要 8 分钟。

(一)System.String类

System.String是一个类,专门用于存储字符串,允许对字符串进行许多操作。C#提供了关键字string和相关的语法,以便使用这个类更轻松。

例子:

使用运算符重载可以连接字符串:

string message1 = "hello";message1 += " world";Console.WriteLine(message1);

运行以上代码,结果如下:

 

例子:

C#还允许使用类似于索引器的语法来提取字符:

string message1 = "hello";char char1 = message1[0];Console.WriteLine(char1);

运行以上代码,结果如下:

 

System.String类的还有许多其它方法。

 

1、创建字符串

String类存在一个问题:重复修改给定的字符串,效率会很低,它实际上是一个不可变的数据类型,一旦对字符串对象进行了初始化,该字符串对象就不能改变了。

例子:

string message1 = "hello";message1 = "hello world";

表面上message1修改了字符串的内容,实际上是创建了一个新的字符串hello world然后将其指向meesage1,原来的hello字符串就没有变量引用它,下一次垃圾收集器清理时就会删除它。

 

2、StringBuilder成员

实例化StringBuilder时有很多重载可以选择,其中就有提供一个字符串和给定容量。

例子:

StringBuilder strb1 = new StringBuilder("hello");StringBuilder strb2 = new StringBuilder(100);

还可以随时显示地设置容量,当字符串长度超出时,就会抛出异常:

StringBuilder strb = new StringBuilder("1个字符");strb.Capacity = 1;

 运行以上代码,结果如下:

 

StringBuilder类上可以进行的处理仅限于替换和追加或删除字符串中的文本。StringBuilder转换为string的唯一方法就是使用ToString()方法。StringBuilder类基本上应在处理多个字符串时使用。

 

3、格式字符串

例子:

Console.WriteLine("张三有存款:{0,10:C}",1000);Console.WriteLine("李四有存款:{0,10:C}", 800);Console.WriteLine("赵六有存款:{0,10:C}", 20000);

运行以上代码,结果如下:

 

解释一下{0,10:C}的作用,其中{0}是占位符,逗号后的数字是表示该项字符串要占用的字符宽度,冒号后面的字母是格式说明符。在使用格式说明符时,会检查占位符替换内容的类型是否实现IFormattable接口,如果没有则调用对象的ToString()方法。

例子:

在自定义类中实现IFormattable

1 class Program 2 { 3     static void Main(string[] args) 4     { 5         Person p = new Person(); 6         p.FirstName = "zhang"; 7         p.SecondName = "san"; 8         Console.WriteLine("无格式说明符:{0}", p); 9         Console.WriteLine("格式说明符C:{0:C}", p);10         Console.WriteLine("格式说明符A:{0:A}", p);11     }12 13 }14 public class Person : IFormattable15 {16     public string FirstName { get; set; }17     public string SecondName { get; set; }18     public string ToString(string format, IFormatProvider formatProvider)19     {20         //当没有传入格式说明符时,直接调用ToString()21         if (format == null)22         {23             return ToString();24         }25         //C表示返回中国格式名字  A表示返回美国格式名字26         switch (format.ToUpper())27         {28             case "C":29                 return FirstName + SecondName;30             case "A":31                 return SecondName + FirstName;32             default:33                 return ToString();34         }35     }36 }

运行以上代码,结果如下:

 

 

 

(二)正则表达式

.NET正则表达式引擎用于兼容Perl 5 的正则表达式。

 

1、正则表达式概述

正则表达式是一种专门用于字符串处理的语言。

 

2、.NET正则表达式的使用

例子:

MatchCollection match = Regex.Matches("happy hapy hay", "ha.+?y");foreach (Match item in match){    Console.WriteLine("{0}位置,匹配到{1}", item.Index, item.Value); }Console.ReadKey();

运行以上代码,结果如下:

 

关于正则表达式的内容另行了解,.NET中主要是Regex相关的类。

 

转载于:https://www.cnblogs.com/dlxh/p/6649481.html

你可能感兴趣的文章
getElement的几中属性介绍
查看>>
第二阶段冲刺-01
查看>>
BZOJ1045 HAOI2008 糖果传递
查看>>
JavaScript 克隆数组
查看>>
【题解】[P4178 Tree]
查看>>
cer证书签名验证
查看>>
【深度学习】caffe 中的一些参数介绍
查看>>
QML学习笔记之一
查看>>
App右上角数字
查看>>
小算法
查看>>
WPF中实现多选ComboBox控件
查看>>
TestNG入门
查看>>
【ul开发攻略】HTML5/CSS3菜单代码 阴影+发光+圆角
查看>>
IO—》Properties类&序列化流与反序列化流
查看>>
Codeforces 719B Anatoly and Cockroaches
查看>>
ActiveMQ与spring整合
查看>>
格式化输出数字和时间
查看>>
关于TFS2010使用常见问题
查看>>
URL编码与解码
查看>>
剑指offer系列6:数值的整数次方
查看>>