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);
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();
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 参数中提供的匹配选项是否在输入字符串中找到匹配项。
|