(一)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 : IFormattable
15 {
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相关的类。

最新文章

  1. Ubuntu1604下安装Liggghts及CFDEM Coupling
  2. android AES 加密
  3. C++之路进阶——codevs2306(晨跑)
  4. css 之 文本缩进属性(text-indent)
  5. 开源库Magicodes.WeChat.SDK总体介绍
  6. ReactNative运行提示缺少文件xxxRootView.h解决方法
  7. codeforces round #201 Div2 A. Difference Row
  8. [swustoj 1097] 2014
  9. typedef与define基本使用
  10. UESTC_邱老师玩游戏 2015 UESTC Training for Dynamic Programming<Problem G>
  11. 轻松把你的项目升级到PWA
  12. mac android studio 出现 Error: SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.
  13. webpack打包速度和性能再次优化
  14. SolidWorks 装配体及工程图
  15. Linux Free命令每个数字的含义 和 cache 、buffer的区别
  16. JavaScript倒计时实现
  17. javascript 字符串的连接和截取
  18. Redis hash结构
  19. Jquery的ajax在IE提交数据乱码解决方法
  20. SPA SEO thought

热门文章

  1. ShardingSphere-proxy-5.0.0建立mysql读写分离的连接(六)
  2. Halcon图片标定,使得后续图片处理过后变成与模板图片一样
  3. 扩展-PageHelper分页插件
  4. do-while循环和三种循环的区别
  5. cnetOS使用Docker
  6. ReentrantLock源码详解
  7. centos更改mac
  8. stringstrean类中关于clear和str的比较
  9. Linux安装mysql8.0.29详细教程
  10. md 中超链接的解析问题:解析`this.$set()`,`$`前要加空格或转义符 `\`