Code
1 class MyString
2 {
3 static void Main(string[] args)
4 {
5 string s1 = "my";
6 string s2 = "my";
7 // 比较两个字符串 str1,str2的大小,如果大于返回正数,等于返回0,小于返回负数!
8
9 if (string.Compare(s1, s2) == 0)
10 {
11 Console.WriteLine("s1 等于 s2 ");
12 }
13
14 // IndexOf——定位字符串中第一次出现某个给定字符串的位置,下标从零开始
15 // 如果找到该字符,则为 value 的索引位置;否则如果未找到,则为 -1。
16
17 Console.WriteLine(s1.IndexOf("y"));
18
19 // PadLeft和PadRight——在字符串的开始和结尾用指定的字符填充字符串
20 //ToLower和ToUpper把字符串转换为小写或大写形式
21 //Trim——删除首尾空白
22 //String.Replace——用指定的字符替换字符串中的指定
23
24
25
26
27
28 string re = "china";
29
30 Console.WriteLine(re.Replace('a', 'e'));
31
32 Console.WriteLine(re.Replace("i", "L"));
33
34
35
36
37 /**//*
38 *
39 *
40 * 程序首先创建一个System.String 类型的对象并初始化为“china”。
41 * 此时编译程度会分配足够的内存来保存这个文本串。并用变量str来表示这个实例。
42 * 当执行str+="chinee"时,系统会创建一个新的实例,并分配足够的内存来保存复合后的文本。
43 * 然后用变量str来表示这个新的字符
44 * 当要进行大规模的字符替换与调整操作时,使用字符串来操作将严重影响性能
45 * 使用stringbuider
46 */
47
48
49 string str = "china";
50 str += "chinee";
51 Console.WriteLine(str);
52
53
54 /**//*
55 * StringBuilder类并没有String 类的功能强大,
56 * 只提供基本的替换和添加和删除字符串中的文本,
57 * 但它的工作效率非常高,
58 * 当定义StringBuilder对象时可以指定内存的内存容量,
59 * 如果不指定系统就会根据对象初始化时的字符串长度来确定。
60 * 它有两个主要参数Length和Capacity分别表示字符串的实际长度和字符串占据的内存空间长度。
61 * 对字符串的修改就是在这个内存中进行的,
62 * 大大提高了添加和替换的的效率。
63 */
64
65
66 StringBuilder sb = new StringBuilder("china", 100);//初始化对象并设置初始容量为100
67 sb.Append(" to www.csdn.net");
68
69
70 StringBuilder sb1 = new StringBuilder("china");//定义初值为www.csdn.net的对象。
71 StringBuilder sb2 = new StringBuilder(20); //初始化容量为20的空对象。
72 //另外StringBuilder还有MaxCapacity属性用来限定对象可以使用的最大容量。默认大约是int.MaxValue(20亿)
73 //可以在使用过程中定义sb.MaxCapacity=value;
74 sb.Append();//给当前字符串追加字符串。
75 sb.AppendFormat();//——添加特定格式的字符串
76 sb.Insert();//——插入一个子字符串
77 sb.Remove();//——从当前字符串删除字符
78 sb.Replace();//——替换字符串中指定的字符
79 sb.ToString();//——将sb转化为String 对象
80
81
88 }
89 }
String常用的方法
Code
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Threading;
6using System.Globalization;
7
8namespace ToUpper
9{
10 class Program
11 {
12 static void Main(string[] args)
13 {
14 string title = "this is my converted string";
15 Console.WriteLine("String Class");
16 Console.WriteLine("------------");
17
18 //Convert string to uppercase.
19 Console.WriteLine(title.ToUpper());
20 //Convert string to lowercase.
21 Console.WriteLine(title.ToLower());
22
23 Console.WriteLine();
24 Console.WriteLine("TextInfo Class");
25 Console.WriteLine("--------------");
26
27 //Get the culture property of the thread.
28 //获取或设置当前线程的区域性。
29 CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture;
30 //Create TextInfo object.
31 //获取定义与区域性关联的书写体系的 System.Globalization.TextInfo。
32 TextInfo textInfo = cultureInfo.TextInfo;
33
34 //Convert to uppercase.
35 //将指定的字符串转换为词首字母大写。
36 Console.WriteLine(textInfo.ToUpper(title));
37 //Convert to lowercase.
38 //将指定的字符串转换为小写。
39 Console.WriteLine(textInfo.ToLower(title));
40 //Convert to title case.
41 // 将指定的字符串转换为词首字母大写。
42 Console.WriteLine(textInfo.ToTitleCase(title));
43
44
45
46
47 }
48 }
49}
50
string 是System.Text中的一个基类,它是基于引用类型而不是基于值类型的.
比如int abc=3; 当你在改变abc的值时,改变的是abc所指向地址的值.但是对于引用类型的string
如果string abc="123"; 当改变为abc.append("34456");时,
它不是直接在原来的内存区域上直接添加后面的字符串,而是在内存中重新开辟一段区域来存储新的字符串,
并将abc重新指向新的地址.这样一来,在进行字符串的连接的时候,string 的效率就显得比较低下.
如果采用stringBuilder类的话,它采用的方法是首先在创建字符串的时候同时创造一个缓冲区域.
比如 StringBuilder abc=new StringBuilder(abcsda,100);表示首先创建的abc的长度(length)为abcsda,而其缓冲区域(capacity)为100.
一般在不显示指定其缓冲区域时,系统根据前面字符串的长度自动生成缓冲区域.这样一来,StringBuilder的执行连接效率就会比string高的多.
但是另一点就是string 类的方法和功能仍然还是比stringBuilder类要强.