LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

字符串和正则表达式

admin
2017年2月7日 18:48 本文热度 5373
System.String是一个功能非常强大且用途非常广泛的基类,但它不是.NET中唯一与字符串相关的类,特别是System.Text和System.Text.RegularExpressions命名空间中的类。本文主要介绍内容:
1、创建字符串
2、格式化表达式
3、正则表达式

一、System.String类

System.String是一个类,专门用于存储字符串,允许对字符串进行许多操作。
例如:
string messsage1 = "Hello"// return "Hello"
message1 += ", There"// return "Hello, There"
string message2 = message1 + "!" //return "Hello, There!"
C#还允许类似于索引符的语法来提取指定的字符:
char char4 = "message"[4]; //return ''a''

1.1 创建字符串

string类的功能非常强大,但是它存在一个问题:重复修改给定的字符串,效率很低。它实际上是一个不可变的数据类型,一旦对字符串进行了初始化,该字符串就不能改变了。修改该字符串的内容时,实际上是创建一个新的字符串,如果有必要,可以把旧的字符串内容复制到新字符串中。
例如:
string greetingText= "Hello. ";
greetingText 
+= "This is source code";
在执行这段代码时,首先创建一个String对象greetingText,并初始化为文本"Hello. "(最后是一个空格)。此时.NET运行库为该字符串分配足够的内存在保存初始文本(7个字符),再设置变量greetingText,表示这个字符串实例。从表面上看,执行下一句代码,是把新的文本直接添加到初始文本的后面,但实际并非如此执行的。而是另外创建一个新的字符串实例,给他分配足够的内存,以保存合并起来的文本,然后更新存储再变量greetingText中的地址,使变量指向新的字符串对象。旧的字符串对象被撤销了引用——不再有变量引用它,下一次垃圾收集器清理应用程序中所有未使用的对象时,就会删除它。

当字符串的长度很大的时候,这样做显然影响了执行效率,所以C#中用System.Text.StringBuilder类来处理较长的字符串。StringBuilder类功能没有String类强大,功能仅限于替换和添加或删除字符串中的文本,但是工作方式非常高效。
用StringBuilder类创建字符串:
StringBuilder greetingBuilder = new StringBuilder("Hello from all the guys at Wrox Press. "150);//显示给定初始文本内容和分配内存长度

StringBuilder message 
= new StringBuilder("Hello");//仅仅给出字符串,系统自动分配内存

StringBuilder message2 
= new StringBuilder(20);//给指定容量创建一个空的StringBuiler 

StringBuiler类有两个主要属性:
Length指定字符串的实际长度
Capacity是字符串占据存储单元的长度
StringBuilder类的主要方法:
Append()方法,在字符串尾部添加新的文本
Replace()方法,替换文本

注意:不能把StringBuilder转换为String,如果要把StringBuilder的内容输出为String,唯一的方式是使用ToString()方法。

1.2 格式化字符串

double d = 13.45;
int i = 45
;
sting result 
= String.Format("The double is {0,10:E} and the int contains {1}",d,i);
{}中的0、1等分别对应后面的d和i,10:E是格式,表示占10个字符,如果数字是正数,结果向右对齐,如果是负数则左对齐。E表示科学计数法。
格式符应用含义示例
C数字类型专用场合的货币值$4834.50(USA)
D只用于整数类型一般的整数4834
E数字类型科学计数法4.834E+003
F数字类型小数点后的位数固定4834.50
G数字类型一般的数字4834.5

N

数字类型通常是专用场合的数字格式4,834.50
P数字类型百分比计数法432,000.00%
X只用于整数类型16进制格式1120(如果需要显示0x1120,需要写上0x)

二、正则表达式

2.1 正则表达式概述

正则表达式语言是一种专门用于字符串处理的语言,使用正则表达式可以对字符串执行许多复杂而高级的操作,例如:区分URI的各个元素(例如:http://www.sina.com.cn,提取协议、计算机名、文件名等)。
在C#中只需要用System.Text.RegularExpressions类的RegEx()方法或者调用静态方法RegEx(),给它们传递要处理的字符串和一个正则表达式,就可以完成我们所需要的操作,得到预期的结果了。
下面列出正则表达式常用字符表
符号含义示例匹配示例
^输入文本的开头^BB,但只能是文本中的第一个字符
$输入文本的结尾X$X,但只能是文本的最后一个字符
.除了换行符(\n)以外的所有单个字符i.ationisation、ization
*可以重复0次或者多次的前导字符ra*trt、rat、raat、raaat等
+可以重复1次或者多次的前导字符ra+trat、raat和raaat等(不包含rt)
?可以重复0次或者1次的前导字符ra?trt或者rat
\s任何空白字符\sa[space]a、\ta、\na等
\S任何不是空白的字符\SF

aF、rF、cF等,但不能是\tF

\b字边界ion\b以ion结尾的任何字
\B是不是字边界的位置\BX\B字中间的任何X
如果搜索一个元字符,可以用.(一个句点)表示所有除了\n以外的字符,而\.表示一个点。
可以把要替换的字符放到括号中:[1│C]表示字符可以是1或者C,如果要搜索map或者man,可以用ma[n│p]。
方括号也可以表示范围:[a-z]表示a到z的所有小写字母。

示例如下:
string Text = @"This comprehensive compendium provides a broad and thorough investigation of all aspects of programming with ASP.NET";
string pattern = @"\ba";//查找所有以a开头的字符

MatchCollection matches = Regex.Matches(Text, pattern, RegexOptions.IgnoreCase);

该文章在 2017/2/7 18:48:30 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved