• 友链

  • 首页

  • 文章归档
h u a n b l o g
h u a n b l o g

欢

HI,Friend

04月
16
C#

C#字符串

发表于 2022-04-16 • 字数统计 2999 • 被 1,437 人看爆

概念

命名空间: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 解析失败

分享到:
可空类型
特性
  • 文章目录
  • 站点概览
欢

网红 欢

你能抓到我么?

Email RSS
看爆 Top5
  • mac系统版本与Xcode版本有冲突 4,082次看爆
  • JAVA_HOME环境配置问题 3,733次看爆
  • AssetBundle使用 3,501次看爆
  • VSCode配置C++开发环境 3,259次看爆
  • Lua反射 3,135次看爆

Copyright © 2025 欢 粤ICP备2020105803号-1

由 Halo 强力驱动 · Theme by Sagiri · 站点地图