C#操作字符串以及正则表达式的用法总结
Posted 一粒细雨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#操作字符串以及正则表达式的用法总结相关的知识,希望对你有一定的参考价值。
string
是C#的基本类型,System.String
是一个类库,两者本质上是没有什么差别的。编码时使用string时系统会自动将其变换成String
类型,多进行一次变换,所以在编码时最好用后者。格式化字符串有两种方法:
public string ToString(string format);
//用来将对象转化成format
格式的字符串
public static string Fomat(string format ,object obj);
//静态函数将object
对象转换成format
格式的字符串这个函数是属于string
类的
比较字符串常用方法(来自string
类):
public static int Compare(string str1,string str2);
//计算的是两个字符串首字符相减的
public int CompareTo(string str);
public bool Equals(string str);
public static bool Equals(string str1,string str2);
public static int CompareOrdinal(string str1,string str2);ASCII
码值
连接字符串方法:
public StringBuilder Append(string str1);
//将要连接的字符串先存储在StringBuilder
对象中,依次将str1等字符串连接
public StringBuilder Append(char [] str1);
复制字符串的方法:
public string CopyTo(int sourceIndex,char[] destination,int destination,int count);
将对象字符串从sourceindex
位置开始复制到目的字符数组destination
,从目的串的destination
位置开始,复制过去count
位
public static string Copy(string str);
将str字符串用=赋给另一个字符串对象
截取字符串对象方法:
public string SubString(int startindex,int length);
//将去字符串对象从startindex
位置开始的length
位
替换字符串:
public string Replace(char oldChar,char Newchar);
public string Replace(string str1,stringstr2);
//将字符串对象中的str1
用str2
来替换
分割字符串方法:
public string []Split(char []separater);
//用sepater
中的分割字符来分割字符串对象,将分隔的字符串保存到字符串对象数组上,供以后调用。
正则表达式的使用方法:
字符匹配语法
\\d
匹配数字(0,9)
\\D
匹配非数字
\\w
匹配任意单字符
\\W
匹配非单字符
\\s
匹配空白字符
\\S
匹配非空字符
.
匹配任意字符
[...]
匹配括号中的那些字符
与字符匹配结合使用的重复匹配语法表
n
匹配n
次字符
n,
匹配n
次以及n
次以上字符
n,m
匹配n
次以上m
次以下字符
?
匹配0
次或1
次字符
+
匹配一次或多次
*
匹配0
次以上
正则表达式的类来自于system.text.regulerexpressions;
该命名空间包含8个类;
Capture
由于单个表达式的捕获结果
CaptureCollection
用于一个序列进行字符串捕获
Group
表示单个捕获的结果
GroupCollection
表示捕获组的集合
Match
表示匹配单个正则表达式的结果
MatchCollection
表示通过迭代方式应用正则表达式到字符串中
Regex
表示不可变的正则表达式
RegexCompilationInfo
将编译正则表达式需要的提供信息
分析正则表达式:如下一个正则表达式a="010\\\\d6,8",
前面010
是正常的字符\\d
是匹配的语法所以在\\d
前面要加上”\\”分割,\\d6,8
是匹配字符与重复匹配语法的结合表示按照\\d
这样的字符重复匹配6次以上8次以下,所以像01012345678,0101234567,010123456,
这三个字符串都是符合语法的。
再一个例子b="\\\\w1,@\\\\w1,\\\\.com",
因为字符串的开头就是字符匹配语法所以要用\\分割,\\w1,
表示匹配单个字符重复匹配至少1次以上,\\\\.com
相当于.com
贪婪与非贪婪的用法,何为贪婪?像上面写的两个正则表达式,一个足够长的字符串,在用上面的表达式匹配时,从头开始扫描字符串当发现一个满足正则表达式的子字符串时算是匹配成功一次,倘若此时字符串字符后面没有匹配完,那么仍要依据正则表达式进行匹配,直到所有字符被匹配完,这样的匹配过程就叫做贪婪匹配,因为他坚持要把所有的字符全部匹配过来才行,所以他很贪婪,反之限制他的匹配次数的过程就叫做非贪婪。如下给出实例:
贪婪模式a=@".*s",
表示匹配以s结尾的任意字符串,非贪婪模式b=@".*?s"
表示只匹配0次或1次相当于是限制了他的重复匹配次数;
另外@当做 当做分割字符来用时相当于\\的功能,即将两个匹配字符分割开来,只不过是他需要放在字符串的外面如a=@".*s"
正则表达式的二选一匹配:
如(ab|xy)
表示在匹配的时候匹配ab或匹配xy都可以,只要有一个成功就可以
捕获和反向引用:
如下, c="<(\\\\w+)>.*</\\\\1>";
正则表达式引擎会记忆()中匹配到的内容,作为一个组,叫做捕获组,并且可以通过索引的方式进行引用。如上面的正则表达式所示,圆括号中\\\\w+
匹配到的内容会被记录到一个捕获组里面在后面用\\1
来进行引用,引用即是指\\1
处的内容与\\w+的内容须一样。如像"A<i>quantifire</\\i>canbe<big>greedy</big>"
的字符串就能匹配出<i>quantifire</\\i>,<big>greedy</big>
这两个字符串来
模式匹配中常用的方法;
public static bool IsMatch(String input,String pattern);input
为要匹配的字符串,pattern是正则表达式
public bool IsMatch(String input);
这个是非静态的函数,input
为要匹配的字符串,正则表达式则要在创建Regex
对象时在构造函数中传递,这个函数也就是只能用Regex
对象才能调用了;
public static MatchCollection Matches(string input, string pattern);
用Match.count
可以输出模式匹配成功了几次,
public Match Match(string input);
用`Match.value可以输出匹配成功的字符串。
以上是关于C#操作字符串以及正则表达式的用法总结的主要内容,如果未能解决你的问题,请参考以下文章