【1】C#操作字符串的常用使用方法
在 C# 中,您可以使用字符数组来表示字符串,但是,更常见的做法是使用 string 关键字来声明一个字符串变量。string 关键字是 System.String 类的别名。
一.创建 String 对象
- 通过给 String 变量指定一个字符串
- 通过使用 String 类构造函数
- 通过使用字符串串联运算符( + )
- 通过检索属性或调用一个返回字符串的方法
- 通过格式化方法来转换一个值或对象为它的字符串表示形式
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 |
using System; namespace StringApplication { class Program { static void Main(string[] args) { //字符串,字符串连接 string fname, lname; fname = "Rowan"; lname = "Atkinson"; string fullname = fname + lname; Console.WriteLine("Full Name: {0}", fullname); //通过使用 string 构造函数 char[] letters = { 'H', 'e', 'l', 'l','o' }; string greetings = new string(letters); Console.WriteLine("Greetings: {0}", greetings); //方法返回字符串 string[] sarray = { "Hello", "From", "Tutorials", "Point" }; string message = String.Join(" ", sarray); Console.WriteLine("Message: {0}", message); //用于转化值的格式化方法 DateTime waiting = new DateTime(2012, 10, 10, 17, 58, 1); string chat = String.Format("Message sent at {0:t} on {0:D}", waiting); Console.WriteLine("Message: {0}", chat); Console.ReadKey() ; } } } |
结果为:
1 2 3 4 |
Full Name: RowanAtkinson Greetings: Hello Message: Hello From Tutorials Point Message: Message sent at 17:58 on Wednesday, 10 October 2012 |
二.String 类的属性
String 类有以下两个属性:
2.1 Chars属性:在当前 String 对象中获取 Char 对象的指定位置。
1 2 3 4 |
string s = "Test"; for (int i= 0; i <= s.Length - 1; i++ ) Console.Write("{0} ", s[i]); 输出: T e s t |
2.2 Length:在当前的 String 对象中获取字符数。
1 2 |
string characters = "abc\u0000def"; Console.WriteLine(characters.Length); // Displays 7 |
三、String 类的方法
String 类有许多方法用于 string 对象的操作。下面的表格提供了一些最常用的方法
3.1字符串常用的静态方法
3.1.1
方法 :Compare 字符串的比较(按照字典顺序)
方法名称:public static int Compare( string strA, string strB )
描述 :比较两个指定的 string 对象,并返回一个表示它们在排列顺序中相对位置的整数。该方法区分大小写。
示例 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
int result= string.Compare(string str1,string str2); 当str1 > str2时,返回1 当str1 = str2时,返回0 当str1 < str2时,返回-1 string.Compare(string str1,string str2,bool ignoreCase) //忽略大小写比较 string s1 = "ani\u00ADmal"; string s2 = "animal"; Console.WriteLine("Comparison of '{0}' and '{1}': {2}", s1, s2, String.Compare(s1, s2)); 输出为0 原因: 字符集包括可忽略的字符。 Compare(String,String)方法在执行文化敏感比较时不考虑这些字符。 例如,如果以下代码在.NET Framework 4或更高版本上运行,则“动物”与“动画”(使用软连字符或U + 00AD)的文化敏感比较表明这两个字符串是相当量。 |
详见:ASCII码对照表
3.1.2
方法:Concat连接方法参数很多,常用的Concat(string str1,string str2);
方法名称:public static string Concat( string str0, string str1 )
描述:连接两个 string 对象。
示例:
1 |
string str=string.Concat("w","e"); //str="we"; |
3.1.3
方法:Format参数化处理,相当于Console.WriteLine();
方法名称:public static string Format( string format, Object arg0 )
描述:把指定字符串中一个或多个格式项替换为指定对象的字符串表示形式。
示例:
1 2 |
string str=String.Format("今天{0}很热","天气");//str="今天天气很热"; Console.WriteLine(str); |
3.1.4
方法:IsNullOrEmpty判断字符是否为null或者为空,返回值为bool;
方法名称:public static bool IsNullOrEmpty( string value )
描述:指示指定的字符串是否为 null 或者是否为一个空的字符串。
示例:
1 2 3 4 5 6 7 8 9 10 11 |
string str1="hahha"; bool b1=string.IsNullOrEmpty(str);//b1=false; string str2=""; bool b2=string.IsNullOrEmpty(str2);//b2=true; string str3=null; bool b3=string.IsNullOrEmpty(str3);//b3=true; |
3.1.5
方法:Join字符串的合并
方法名称:public static string Join( string separator, string[] value )
描述:连接一个字符串数组中的所有元素,使用指定的分隔符分隔每个元素。
示例:
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 |
using System; namespace StringApplication { class StringProg { static void Main(string[] args) { string[] starray = new string[]{"Down the way nights are dark", "And the sun shines daily on the mountain top", "I took a trip on a sailing ship", "And when I reached Jamaica", "I made a stop"}; string str = String.Join("\n", starray); Console.WriteLine(str); Console.ReadKey() ; } } } 当上面的代码被编译和执行时,它会产生下列结果: Down the way nights are dark And the sun shines daily on the mountain top I took a trip on a sailing ship And when I reached Jamaica I made a stop |
3.2 字符串常用的实例方法
3.2.1
方法:Contains 判断字符串中是否包含某个字符,返回bool值。
方法名称:public bool Contains( string value )
描述:返回一个表示指定 string 对象是否出现在字符串中的值。
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using System; namespace StringApplication { class StringProg { static void Main(string[] args) { string str = "This is test"; if (str.Contains("test")) { Console.WriteLine("The sequence 'test' was found."); } Console.ReadKey() ; } } } 当上面的代码被编译和执行时,它会产生下列结果: The sequence 'test' was found. |
3.2.2
方法:EndsWith和StartsWith 判断是否是已某种字符串开始或者结束
方法名称:public bool EndsWith( string value )
描述:判断 string 对象的结尾是否匹配指定的字符串。
方法名称:public bool StartsWith( string value )
描述:判断字符串实例的开头是否匹配指定的字符串。
示例:
1 2 3 4 5 |
string str="好大的雨呀"; bool b1=str.StartsWith("大");//b1=false; bool b2-str.EndsWith("呀");//b2=true; |
3.2.3
方法:Equals 比较两个字符串是否相等
方法名称:public static bool Equals( string a, string b )
描述:判断两个指定的 string 对象是否具有相同的值。
示例:
1 2 3 4 5 |
string str1="asd"; string str2="ert"; bool b = str1.Equals(str2); //b=false; bool <strName>.Equals(string str, StringComparison.OrdinalIgnoreCase) //表示不区分大小写 |
3.2.4
方法:IndexOf 和 LastIndexOf 判断字符串第一次出现(IndexOf)和最后一次出现(LastIndexOf )的位置,如果没有出现过则返回值为-1
方法名称:
描述:
public int IndexOf( char value )
返回指定 Unicode 字符在当前字符串中第一次出现的索引,索引从 0 开始。
public int IndexOf( string value )
返回指定字符串在该实例中第一次出现的索引,索引从 0 开始。
public int IndexOf( char value, int startIndex )
返回指定 Unicode 字符从该字符串中指定字符位置开始搜索第一次出现的索引,索引从 0 开始。
public int IndexOf( string value, int startIndex )
返回指定字符串从该实例中指定字符位置开始搜索第一次出现的索引,索引从 0 开始。
public int LastIndexOf( char value )
返回指定 Unicode 字符在当前 string 对象中最后一次出现的索引位置,索引从 0 开始。
public int LastIndexOf( string value )
返回指定字符串在当前 string 对象中最后一次出现的索引位置,索引从 0 开始。
示例:
1 2 3 4 5 6 |
string str ="今天的雨很大,天很冷"; int i=str.IndexOf("很"); //i=4; int i=str.LastIndexOf("很");//j=8; int m=str.IndexOf("小");//m=-1; |
3.2.5
方法:Replace 字符串(字符也是可以的)替换,返回新的字符串
方法名称:
描述:
public string Replace( char oldChar, char newChar )
把当前 string 对象中,所有指定的 Unicode 字符替换为另一个指定的 Unicode 字符,并返回新的字符串。
public string Replace( string oldValue, string newValue )
把当前 string 对象中,所有指定的字符串替换为另一个指定的字符串,并返回新的字符串。
示例:
1 2 3 4 |
s ="A_B_C_D"; Console.WriteLine(s.Replace('_', '-')); // 把字符串中的'_'字符替换为'-',输出"A-B-C-D" Console.WriteLine(s.Replace("_", "")); // 把字符串中的"_"替换为空字符串,输出"A B C D" Console.WriteLine(); |
3.2.6
方法:Insert 插入 在字符串的index位置上插入字符,原来的字符依次后移,变成一个新的字符串
方法名称:public string Insert( int startIndex, string value )
描述:返回一个新的字符串,其中,指定的字符串被插入在当前 string 对象的指定索引位置。
示例:
1 2 3 |
string str="夜深了"; string s=str.Insert(1,"已经");// s="夜已经深了" |
3.2.7
方法:Remove删除字符串(字符)
方法名称:
描述:
public string Remove( int startIndex )
移除当前实例中的所有字符,从指定位置开始,一直到最后一个位置为止,并返回字符串。
public string Remove( int startIndex, int count )
从当前字符串的指定位置开始移除指定数量的字符,并返回字符串。
示例:
1 2 3 |
string str="夜已经深了"; string s=str.Remove(1,2);//s="夜深了"; |
3.2.8
方法:Split 将字符串<strName>以sep数组中的字符分割,分割后得到的内容存到一个数组中(string[] <strName>.Split(params char[] sep);)
方法名称:
描述:
public string[] Split( params char[] separator )
返回一个字符串数组,包含当前的 string 对象中的子字符串,子字符串是使用指定的 Unicode 字符数组中的元素进行分隔的。
public string[] Split( char[] separator, int count )
返回一个字符串数组,包含当前的 string 对象中的子字符串,子字符串是使用指定的 Unicode 字符数组中的元素进行分隔的。int 参数指定要返回的子字符串的最大数目。
示例:
1 2 3 |
string str="我,真的、好困;呀"; string[] s=str.Split(new char(){',','、',';'});//s=string[]{"我","真的","好困","呀"}; |
3.2.9
方法:Substring 截取字符<str>以index开始截取,并截取lenth个字符(string <str>.Substring(index,lenth))
示例:
1 2 3 4 5 6 7 8 |
string str="还在下雨"; string s=str.Substring(2,2);//s="下雨"; s ="ABCD"; Console.WriteLine(s.Substring(1)); // 从第2位开始(索引从0开始)截取一直到字符串结束,输出"BCD" Console.WriteLine(s.Substring(1, 2)); // 从第2位开始截取2位,输出"BC" Console.WriteLine(); |
3.2.10
方法:ToCharArray将字符串转化为字符数组(<string>.ToCharArray())
方法名称:
描述:
public char[] ToCharArray()
返回一个带有当前 string 对象中所有字符的 Unicode 字符数组。
public char[] ToCharArray( int startIndex, int length )
返回一个带有当前 string 对象中所有字符的 Unicode 字符数组,从指定的索引开始,直到指定的长度为止。
示例:
1 2 3 4 5 |
//打散为字符数组(ToCharArray) s ="ABCD"; char[] arr = s.ToCharArray(); // 把字符串打散成字符数组{'A','B','C','D'} Console.WriteLine(arr[0]); // 输出数组的第一个元素,输出"A" Console.WriteLine(); |
3.2.11
方法:Trim() 出去两边的空格
方法名称:
public string Trim()
描述:移除当前 String 对象中的所有前导空白字符和后置空白字符。
示例(补充):
1 2 3 4 5 6 7 8 9 10 |
string str=" dd "; string s=str.Trim();//s="dd"; 截头去尾(Trim) s ="__AB__CD__"; Console.WriteLine(s.Trim('_')); // 移除字符串中头部和尾部的'_'字符,输出"AB__CD" Console.WriteLine(s.TrimStart('_')); // 移除字符串中头部的'_'字符,输出"AB__CD__" Console.WriteLine(s.TrimEnd('_')); // 移除字符串中尾部的'_'字符,输出"__AB__CD" Console.WriteLine(); |
3.2.12
方法:ToUpper(转换为大写)和ToLower(转换为小写)
方法名称:
描述:
public string ToLower()
把字符串转换为小写并返回。
public string ToUpper()
把字符串转换为大写并返回。
示例:
1 2 3 4 5 |
string s="RaSer"; string s1=s.ToUpper();//s1="RASER"; string s2=s.ToLower();//s2="raser"; |
3.2.13
方法:填充对齐(PadLeft和PadRight)
示例:
1 2 3 4 |
s ="ABCD"; Console.WriteLine(s.PadLeft(6, '_')); // 使用'_'填充字符串左部,使它扩充到6位总长度,输出"__ABCD" Console.WriteLine(s.PadRight(6, '_')); // 使用'_'填充字符串右部,使它扩充到6位总长度,输出"ABCD__" Console.WriteLine(); |
【2】DateTime 数字型
1 |
方法:System.DateTime currentTime=new System.DateTime(); |
1.1 取当前年月日时分秒
1 |
currentTime=System.DateTime.Now; |
1.2 取当前年/月/日/时/分/秒/毫秒
1 |
int 年=currentTime.Year;//.Day//.Hour//.Minute//.Second//.Millisecond |
1.3 取中文日期显示——年月日时分
1 |
string strY=currentTime.ToString("f"); //不显示秒 |
1.4 取中文日期显示_年月
1 |
string strYM=currentTime.ToString("y"); |
1.5 取中文日期显示_月日
1 |
string strMD=currentTime.ToString("m"); |
1.6 取当前年月日,格式为:2003-9-23
1 |
string strYMD=currentTime.ToString("d"); |
1.7 取当前时分,格式为:14:24
1 |
string strT=currentTime.ToString("t"); |
【3】字符型转换位数字型
1 |
Int32.Parse(变量) Int32.Parse("常量") |
【4】变量.ToString()
1 2 3 4 5 6 7 |
字符型转换 转为字符串 12345.ToString("n"); //生成 12,345.00 12345.ToString("C"); //生成 ¥12,345.00 12345.ToString("e"); //生成 1.234500e+004 12345.ToString("f4"); //生成 12345.0000 12345.ToString("x"); //生成 3039 (16进制) 12345.ToString("p"); //生成 1,234,500.00% |
【5】字码转换转为比特码
1 2 3 4 5 6 7 |
System.Text.Encoding.Default.GetBytes(变量) 如:byte[] bytStr = System.Text.Encoding.Default.GetBytes(str); 然后可得到比特长度: len = bytStr.Length; |
【6】System.Text.StringBuilder(“”)
1 2 3 4 5 |
如: System.Text.StringBuilder sb = new System.Text.StringBuilder(""); sb.Append("中华"); sb.Append("人民"); sb.Append("共和国"); |
【7】把字符转为数字,查代码点,注意是单引号。
1 2 3 |
(int)'字符' 如: console.Write((int)'中'); //结果为中字的代码:20013 |
【8】把数字转为字符,查代码代表的字符:(char)代码
1 |
console.Write((char)22269); //返回“国”字。 |
【9】取i与j中的最大值:Math.Max(i,j)
1 |
如 int x=Math.Max(5,10); // x将取值 10 |
【10】反转整个一维Array中元素的顺序
1 2 3 |
char[] charArray = "abcde".ToCharArray(); Array.Reverse(charArray); Console.WriteLine(new string(charArray)); |
【11】判断一个字符串中的第n个字符是否是大写
1 2 |
string str="abcEEDddd"; Response.Write(Char.IsUpper(str,3)); |