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

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

【读书笔记】C#高级编程 第九章 字符串和正则表达式相关推荐

  1. 读书笔记-Java高级编程-魏勇

    Java高级编程 魏勇 清华大学出版社 ISBN-9787302450948 仅供参考, 自建索引, 以备后查 一.javadoc.jar.JMX.SVN.Git /** * 此类注释出在执行命令后生 ...

  2. 读书笔记_大话数据结构第九章_排序

    排序 冒泡[O的n方] 简单选择[O的n方]

  3. 读书笔记——《Python编程从入门到实践》第二章

    读书笔记--<Python编程从入门到实践>第二章 读书笔记--<Python编程从入门到实践>第二章 变量 如何使用变量 如何规范变量命名 字符串 字符串是什么 如何修改字符 ...

  4. 《深入理解计算机系统》读书笔记-016(第 12 章 并发编程)

    <深入理解计算机系统>读书笔记-016(第 12 章 并发编程) 太惨了,这章真心不大看得懂啊--等把前面的补上之后把读书笔记重新整理一下吧.这样看了跟没看也没啥区别了. 在线程中,不同于 ...

  5. mysql函桌为之一的_MYSQL必知必会读书笔记第十和十一章之使用函数处

    mysql简介 MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理. 拼接字段 存储在数据库表中的 ...

  6. 高等数学笔记-苏德矿-第九章-重积分(Ⅱ)-三重积分

    高等数学笔记-苏德矿 第九章-重积分(Ⅱ)-三重积分 第三节 三重积分的概念和性质 一.三重积分的典例 01 一些基本概念 (1) 立体的体密度 (2) 求立体V的质量 设有界闭区域立体 VVV 的密 ...

  7. 高等数学笔记-苏德矿-第九章-重积分(Ⅰ)-二重积分

    高等数学笔记-苏德矿 第九章-重积分(Ⅰ)-二重积分 第一节 二重积分的概念和性质 一.二重积分的典例 01 平面薄板的质量 平面薄片一点的面密度的定义: 设有一个平面薄片位于 xOyxOyxOy 平 ...

  8. MYSQL学习笔记(自用)第九章

    MYSQL学习笔记(自用)第九章 第一节. 触发器 | Triggers DELIMITER $$CREATE TRIGGER payments_after_insertAFTER INSERT ON ...

  9. 《资本论》读书笔记(2)第二卷第一章:资本形态变化及其循环

    <资本论>读书笔记(2)第二卷第一章:资本形态变化及其循环 +BIT祝威+悄悄在此留下版了个权的信息说: 货币资本的循环 第一阶段:资本家用手里的钱买来设备.原材料,雇来一批工人,或者说, ...

  10. 【读书笔记】Python编程:从入门到实践-埃里克·马瑟斯,python基础体系巩固和常见场景练习

    [概述] 书名:Python编程:从入门到实践 作者:埃里克·马瑟斯 日期:2021年09月01日 读书用时:1632页,100小时,27个笔记 [读书笔记] ◆ 第4章 操作列表 >> ...

最新文章

  1. AlarmManager与PendingIntent的联合使用(一)
  2. ITK:二进制和两个图像
  3. SQL点滴22—性能优化没有那么神秘
  4. mybatis:延迟加载时不要在get/set方法上面添加final关键字(原创)
  5. mybatis3的中文官方文档
  6. 解决microsoft visual c++ build tools安装包丢失或损坏
  7. 一个非常好用的截图工具SETUNA
  8. 手游营销的10个靠谱方向
  9. 微机 —— 可编程并行接口芯片8255A 应用
  10. 沈劭劼居然还是大疆的....大疆真的可怕。大疆如果做一款室内无人机不分分钟秒杀其他。
  11. CSS的动画特效(animation)
  12. 业务架构师如何进阶成长
  13. 病案编码员需要计算机的什么知识,病案编码员要怎么学习?
  14. 新零售saas小程序如何探索数字化门店的破局之路?
  15. java 在线 excel文件_Java实现最简单的在线打开保存Excel文件 - PageOffice
  16. python IDLE中反斜杠显示为人民币符号¥
  17. MySQL审核神器Inception
  18. Cow Tennis Tournament
  19. C# 最新手机号码段的号码验证实现
  20. QueryWrapper用法集合

热门文章

  1. 【sklearn第二十八讲】验证曲线
  2. 软件类配置(五)【强化学习算法框架-Ubuntu16.04安装谷歌Dopamine及初步测试】
  3. 判断是否是合法的IP地址
  4. python-14:迭代器 生成器,3种方法:g.__next__() next(g) g.send(value)
  5. 安装jenkins环境之jdk8
  6. 如何合理封装你的轮子、飞机、大炮(以封装OkHttp为例)
  7. 如何才能让项目团队高效稳定?
  8. 30道Linux面试题
  9. 安装.net Framework 3.5 SP1非常慢的解决方案
  10. JAVA-进行Java Web项目开发需要掌握的技术