概念

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using System;

namespace CSharp高级篇学习
{
class Program
{
static void Main(string[] args)
{
//使用string类型去储存字符串类型
string s = "www.dfghjkl.com";
//获取字符串长度
int length = s.Length;
Console.WriteLine(length);
//字符串的判断
if (s == "xxx")
{
Console.WriteLine("相同");
}
else
{
Console.WriteLine("不相同");
}
//字符串相加
s = "http://" + s;
Console.WriteLine(s);
//通过索引访问字符串中的字符
var a = s[3];
Console.WriteLine(a);
//遍历字符串中的所有字符
for (int i = 0; i < s.Length; i++)
{
Console.Write(s[i] + " ");
}
}
}
}

字符串方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
namespace String_and_Regular_Expression
{
class Program
{
static void Main(string[] args)
{
//CompareTo方法

string s = "bbb";
// 摘要:
// 将此字符串与指定的 System.String 对象进行比较
//并指示此字符串在排序顺序中是位于指定的字符串之前、之后还是与其出现在同一位置。
// 参数:
// strB:要与此字符串进行比较的字符串。
// 返回结果:
//一个 32 位带符号整数,该整数指示此字符串在排序顺序中是位于 strB 参数之前、之后还是与其出现在同一位置。
//值 条件 小于零 此字符串位于 strB 之前。
//零 此字符串在排序顺序中的位置与 strB 相同。
//大于零 此实例位于 strB 之后。 - 或 - strB 为 null。
//比较字符串的内容是否相等,
Console.WriteLine(s.CompareTo("abb"));
Console.WriteLine(s.CompareTo("bcb"));
Console.WriteLine(s.CompareTo("bbb"));
Console.WriteLine(s.CompareTo("你好吗"));

//Replace方法
string s1 = "aaabbbccc";

//将指定的字符或字符串替换
Console.WriteLine(s1.Replace('b', 'd'));
Console.WriteLine(s1.Replace("b", "d"));
Console.WriteLine(s1.Replace("bbb", "ddd"));

//Split方法
string s2 = "aaa,bbb,ccc";

//将字符串按照指定符号切割为字符串
string[] sSplitArray = s2.Split(',');
foreach (var item in sSplitArray)
{
Console.Write(item);
}
Console.WriteLine();

//SubString方法
string s3 = "bbbcccddd";

//将字符串按照指定index返回为子字符串
Console.WriteLine(s3.Substring(3));
//将字符串按照指定index和后续数字返回子字符串
Console.WriteLine(s3.Substring(3, 3));

//ToUpper和ToLower方法 略

//Trim方法
string s4 = " kkk. www. mm ";
//去除开头空格
Console.WriteLine(s4.Trim());

//IndexOf方法
string s5 = "mmmnnnxxx";
//返回子字符串开头字母的index
Console.WriteLine(s5.IndexOf("mnn"));
//如果不包含指定字符,返回负一
Console.WriteLine(s5.IndexOf("kkk"));
}
}
}

StringBuilder类
使用StringBuilder需要引进System.Text命名空间。String一旦赋值或实例化后就不可更改,如果赋予新值将会重新开辟内存地址进行存储,而StringBuilder是可以修改的。
参考数组和列表的区别

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
namespace StringBuilderTest
{
class StringBuilderTest1
{
static void Main(string[] args)
{
//初始化StringBuilder,并且使用特定字符
StringBuilder stringBuilder = new StringBuilder("aaa");

//初始化StringBuilder,并且使用特定字符和容量
StringBuilder stringBuilder1 = new StringBuilder("bbb", 10);

//初始化StringBuilder,使用特定容量
StringBuilder stringBuilder2 = new StringBuilder(10);

}
}
}

String和StringBuilder的区别

String在操作是需要创建一块新的内存,然后把之前的复制过来,而StringBuilder在原有内存做操作,不需要申请新的内存。当我们需要对一个字符串进行频繁的删除添加操作时,使用StringBuilder的效率要高于String。
StringBuilder类