C#字符串和正则表达式参考手册(笔记)

本文详细介绍了C#中String类和StringBuilder类的使用方法,包括格式化字符串、标记、字符串分离、颠倒字符串次序、排序及正则表达式应用等核心功能。通过实例演示了如何高效地进行字符串操作。
 
String 类和StringBuilder类
一、    格式化字符串
Publi1c string ToString(string format,IformatProvider provider )
第一个参数是格式说明符,第二个参数是格式提供者。如果缺少 format字符串,就调用方法System.Iconvertible.ToString(),它公包含了IformatProvider参数,并且作用一个默认格式。如果没有提供任何参数,System.Object.ToString()将使用一个默认的格式说明符和一个默认的格式提供者
格式说明符和用法示例
格式字符
格式说明
举例
输出
C或 c
货币记数
1000. ToString(“C”);
(-1000).ToString(“C”);
$1,000.00
($1,000.00)
D或 d
小数记数
1000. ToString(“D”);
1000
E或 e
科学记数 (幂)
100000.ToString(“E”);
1.00000E+005
F或 f
定点记数
1000. ToString(“F4”);
1000. ToString(“F0”);
1000.0000
1000
G或 g
通用记数
1000. ToString(“G”);
1000
N或 n
数字形式
1000. ToString(“N”);
1,000.00
X或 x
十六进制形式
1000. ToString(“X”);
1000. ToString(“x”);
0x1000. ToString(“x”);
3E8
3e8
1000
P或  p
百分数
1.ToString(“P”);
100.00%
R或 r
往返 .它可以保证字符串表示能转换回数字形式.它适用于Double类型而不适用于Integer类型
Double d=100.0;
d.Tostring(“R”);
1000
d
短日期模式
 
5/20/2002
D
长日期模式
 
Monday,May 20,2002
T
长日间模式
 
3: 51:04 PM
t
短时间模式
 
3: 51 PM
注意,格式字符不区分大小写,除了“X”和“x”,这种情况下格式字符的大小写会决定十六进制数字使用的大小写。上表中显示的格式化信息公适用于en-US文化。如果使用另一种文化,其输出就会有所不同。
二、     标记( String.IndexOfAny 方法),即分离字符串
报告指定 Unicode 字符数组中的任意字符在此实例中第一个匹配项的索引。
重载列表
名称
说明
报告指定 Unicode 字符数组中的任意字符在此实例中第一个匹配项的索引。
报告指定 Unicode 字符数组中的任意字符在此实例中第一个匹配项的索引。该搜索从指定字符位置开始。
报告指定 Unicode 字符数组中的任意字符在此实例中第一个匹配项的索引。搜索从指定字符位置开始,并检查指定数量的字符位置。
例如:将一句话分离出来:
The IndexPopulationStatus enumeration contains values that are used to specify the type of population in progress 即变成一个单词一个单词的显示出来。
string  str  =   " The IndexPopulationStatus enumeration contains values that are used to specify the type of population in progress " ;
            
char [] scpators = ... {' ',',','.','?','!','"',':',';'} ;
            
int  starPos  =   0 ;
            
int  endPos  =   0 ;
            
do
            
... {
                endPos 
= str.IndexOfAny(scpators, starPos);
                
if (endPos == -1) endPos = str.Length;
                Console.WriteLine(str.Substring(starPos, endPos 
- starPos));
                starPos 
= endPos + 1;
            }
  while  (endPos  <  str.Length);
 
最后结果为:
 
1、          颠倒字符串次序。
有时需要颠倒一个字符串的次序。
        
     // 任何继承于Array的类都利用Reverse()方法为数组中的元素重新排序。要颠倒这个字符串,应从字符串中创建一个字符数组调用Reverse()方法。结果返回的数组是颠倒字符次序后的字符串。
 
string  str  =   " What are used to specify the type of population in progress " ;
            
char [] scpators  =  str.ToCharArray();
            Array.Reverse(scpators);
            Console.WriteLine(str);
            Console.WriteLine(scpators);
            Console.ReadKey();
2、          排序
字符串有两种方式排序:
一是不区分文化的方式,只考试被排序字符的实际码点值,
String.CompareOrdinal  比较两个字符串而不考虑本地区域性。返回整数值。(0,1,-1)
即String.CompareOrdinal (String, String) 通过计算每个字符串中相应 Char 对象的数值来比较两个指定的 String 对象。
例: 
正则表达式
正则表达式(regular expression,简写为regexes)是用来操作和检验字符串数据的一种强大的工具.正则表达式是一串特殊的字符,它转换为某种算法,根据这个算法来匹配文本.对许多开发人员来说,正则表达式是新引入的概念,但在Unix系统甚至是Web脚本语言(如JavaScript)中已经得到了广泛的应用.
NET 实现正则表达式的关键在于 System.Text.RegularExpressions 命名空间,它包含了8个类.
l        Regex- 包含了正则表达式,以及使用正则表达式的各种方法
l        MatchCollection- 包含了一正则表达式找到的所有匹配项
l          Match- 包含了一次匹配中所有匹配的文本
l        GroupCollection- 包含了一次匹配中的所有分组.
l        Group- 包含了一个分组集合中一个组的细节
l        CaptureCollection= 包含一个组的所有Capture对象
l        Capture- 返回组内一次捕获所匹配的字符串
l        RegexCompilationInfo- 提供了把Regex编译为一个独立程序集所需的细节
 
1、 Regex类
Regex类不仅可以用来创建正则表达式,而且提供了许多有用的方法,以使用正则表达式来操作字符串数据。例如,搜索字符模式或进行复杂的查找和替换。如果要把一个正则表达式重复用于不同的字符串,就可以创建一个Regex对象。
初始化 Regex 类的新实例。
RegexOptions枚举
 
RegexOptions常用选项
 
成员名称
说明
Compiled
指定将正则表达式编译为程序集。这会产生更快的执行速度,但会增加启动时间。 
ECMAScript
为表达式启用符合 ECMAScript 的行为。该值只能与 IgnoreCase、Multiline 和 Compiled 值一起使用。该值与其他任何值一起使用均将导致异常。 
IgnoreCase
指定不区分大小写的匹配。 
Multiline
多行模式。更改 ^ 和 $ 的含义,使它们分别在任意一行的行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配。 
None
指定不设置选项。 
RightToLeft
指定搜索从右向左而不是从左向右进行。 
Singleline
指定单行模式。更改点 (.) 的含义,使它与每一个字符匹配(而不是与除 /n 之外的每个字符匹配)。 
 
Regex 的构造函数
名称                                                说明 
Regex ()                                      初始化 Regex 类的新实例。
Regex (String)                      为指定的正则表达式初始化并编译 Regex 类的一个新实例。
Regex (SerializationInfo, StreamingContext) 使用序列化数据初始化 Regex 类的新实例。
Regex (String, RegexOptions)       用修改模式的选项为指定的正则表达式初始化并编译 Regex 类的一个新实例。
 
例如:匹配ABC
Regex rex = new Regex("abc");
// 如果不用区分大小写,则写成 Regex rex = new Regex("abc",RegexOptions.IgnoreCase )
            string str = "compute asdf aabc";
            Console.WriteLine(rex.IsMatch (str));// 最后结果返回为True
 
IsMatch() 方法可以测试字符串,看它是否匹配正则表达式的模式。如果发现了一次匹配,那么该方法返回True,否则返回False。IsMatch()有一个静态的重载方法,使用它可以无需显示地创建一个Regex对象。
名称
说明
Regex.IsMatch (String)
指示 Regex 构造函数中指定的正则表达式在输入字符串中是否找到匹配项。
 
Regex.IsMatch (String, String)
指示正则表达式使用 pattern 参数中指定的正则表达式是否在输入字符串中找到匹配项。
Regex.IsMatch (String, String, RegexOptions)
指示正则表达式使用 pattern 参数中指定的正则表达式和 options 参数中提供的匹配选项是否在输入字符串中找到匹配项。
 
 
 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值