概念
命名空间:System.String
string类型的有用成员
成员 | 类型 | 意义 |
---|---|---|
Length | 属性 | 返回字符串长度 |
Concat | 静态方法 | 返回连接参数字符串后的字符串 |
Contains | 方法 | 返回指示参数是否是对象字符串的子字符串的bool值 |
Format | 静态方法 | 返回格式化后的字符串 |
Insert | 方法 | 接受一个字符串和一个位置作为参数,创建并返回一个,在指定的位置插人了参数字符串的新的字符串对象副本 |
Remove | 方法 | 从对象字符串中移除一组字符 |
Replace | 方法 | 替换对象字符串中的字符 |
Split | 方法 | 返回一个包括原始字符串的子字符串的字符串数组。为输入参数提供一个带有一组分开目标子字符串的分隔符的方法 |
Substring | 方法 | 获取对象字符串的子字符串 |
ToLower | 方法 | 返回对象字符串的副本,其中所有字母的字符都为小写 |
ToUpper | 方法 | 返回对象字符串的副本,其中所有字母的字符都为大写 |
从中的大多数方法的名字来看,好像它们都会改变字符串对象。其实,它们不会改变字符串而是返回了新的副本。对于一个string,任何“改变”都会分配一个新的恒定字符串。
例1
例如,下面的代码声明并初始化了一个叫做s的字符串。第一个writeLine语句调用了s的ToUpper方法,它返回了字符串中所有字母为大写形式的副本。最后一行输出了s的值,可以看到,字符串并没有改变。
string s = "Hi there";
Console.WriteLine("{0}", s.ToUpper()); //输出所有字母为大写的副本
Console.WriteLine("{0}", s);
结果
HI THERE
Hi there
例2
string s1 = "hi there! this, is:a string.";
char[] delimiters = { ' ', '!', ',', ':', '.' };
string[] words = s1.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine("Word Count: {0}\n\rThe Words...", words.Length);
foreach(string s in words)
{
Console.WriteLine(" {0}", s);
}
结果
Word Count: 5
The Words...
hi
there
this
is:a
string
使用StringBuilder类
stringBuilder类可以帮助你动态、有效地产生字符串,并且避免创建许多副本。与上面相反
- StringBuilder类是BCL的成员,位于System.Text命名空间中。
- StringBuilder对象是Unicode字符的可变数组。
例
例如,下面的代码声明并初始化了一个StringBuilder类型的字符串,然后输出了它的值。第四行代码通过替换初始字符串的一部分改变了其实际对象。当输出它的值,隐式调用ToString时,我们可以看到,和String类型的对象不同,StringBuilder对象确实被修改了。
StringBuilder sb = new StringBuilder("Hi there");
Console.WriteLine("{0}", sb.ToString());
sb.Replace("Hi", "Hello");
Console.WriteLine("{0}", sb.ToString());
结果
Hi there
Hello there
字符串解析为数据值
- 解析允许我们接受表示值的字符串,并且把它转换为实际值。
- 所有预定义的简单类型都有一个叫做
Parse
的静态方法,它接受一个表示这个类型的字符串值,并且把它转换为类型的实际值。
例
string s1 = "25.873";
string s2 = "36.240";
double d1 = double.Parse(s1);
double d2 = double.Parse(s2);
double total = d1 + d2;
Console.WriteLine("Total: {0}", total);
结果
Total: 62.113
Parse
方法的缺点是如果不能把string成功转换为目标类型的话会抛出一个异常。异常是昂贵的操作,应该尽可能在编程中避免异常。TryParse
方法可以避免这个问题
TryParse方法
- 每一个具有
Parse
方法的内置类型同样都有一个TryParse
方法。 TryParse
方法接受两个参数并且返回一个bool值。- 第一个参数是你希望转换的字符串。
- 第二个是指向目标类型变量的引用的
out
参数。如果TryParse
成功,返回true,否则返回false。
例
string parseResultSummary;
string stringFirst = "28";
int intFirst;
//stringFirst输入字符串
//intFirst 输出变量
bool success = int.TryParse(stringFirst, out intFirst);
parseResultSummary = success ? "解析成功" : "解析失败";
Console.WriteLine("String {0} {1}", stringFirst, parseResultSummary);
string stringSecond = "vt7502";
int intSecond;
success = int.TryParse(stringSecond, out intSecond);
parseResultSummary = success ? "解析成功" : "解析失败";
Console.WriteLine("String {0} {1}", stringSecond, parseResultSummary);
结果
String 28 解析成功
String vt7502 解析失败