c#的string的方法有几个

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#的string的方法有几个相关的知识,希望对你有一定的参考价值。

C# string类应用
判断是否包含子串
想要判断一个字符串中是否包含某个子串,可以用Contains方法来实现:

Ø public bool Contains (string value)

参数value为待判定的子串。如果包含,返回true;否则返回false。下面的代码判断“Hello”中是否包含两个子串。

1. bool b1 = strA.Contains("ll"); //true

2. bool b1 = strA.Contains("MM"); //false

4.1.4 定位字符和子串

定位子串是指在一个字符串中寻找其中包含的子串或者某个字符。在String类中,常用的定位子串和字符的方法包括IndexOf/LastIndexOf及IndexOfAny/LastIndexOfAny,下面进行详细介绍。

1.IndexOf/LastIndexOf
IndexOf方法用于搜索在一个字符串中,某个特定的字符或者子串第一次出现的位置,该方法区分大小写,并从字符串的首字符开始以0计数。如果字符串中不包含这个字符或子串,则返回-1。常用的重载形式如下所示。

(1)定位字符:

int IndexOf(char value)

int IndexOf(char value, int startIndex)

int IndexOf(char value, int startIndex, int count)

(2)定位子串:

int IndexOf(string value)

int IndexOf(string value, int startIndex)

int IndexOf(string value, int startIndex, int count)

在上述重载形式中,其参数含义如下:

value:待定位的字符或者子串。

startIndex:在总串中开始搜索的其实位置。

count:在总串中从起始位置开始搜索的字符数。

下面的代码在“Hello”中寻找字符‘l’第一次出现的位置。

代码4-7 使用IndexOf寻找字符第一次出现位置:Default.aspx.cs

1. String s=”Hello”;

2. int I = s.IndexOf(‘l’)); //2

同IndexOf类似,LastIndexOf用于搜索在一个字符串中,某个特定的字符或者子串最后一次出现的位置,其方法定义和返回值都与IndexOf相同,不再赘述。

2.IndexOfAny/LastIndexOfAny
IndexOfAny方法功能同IndexOf类似,区别在于,它可以搜索在一个字符串中,出现在一个字符数组中的任意字符第一次出现的位置。同样,该方法区分大小写,并从字符串的首字符开始以0计数。如果字符串中不包含这个字符或子串,则返回-1。常用的IndexOfAny重载形式有3种:

(1)int IndexOfAny(char[]anyOf);

(2)int IndexOfAny(char[]anyOf, int startIndex);

(3)int IndexOfAny(char[]anyOf, int startIndex, int count)。

在上述重载形式中,其参数含义如下:

(1)anyOf:待定位的字符数组,方法将返回这个数组中任意一个字符第一次出现的位置。

(2)startIndex:在原字符串中开始搜索的其实位置。

(3)count:在原字符串中从起始位置开始搜索的字符数。

下例在“Hello”中寻找字符‘l’第一次和最后一次出现的位置。

代码4-8 使用IndexOfAny寻找子串第一次和最后一次出现位置:Default.aspx.cs

1. String s = “Hello”;

2. char[] anyOf='H','e','l';

3. int i1 = s.IndexOfAny(anyOf)); //0

4. int i2 = s.LastIndexOfAny(anyOf)); //3

同IndexOfAny类似,LastIndexOfAny用于搜索在一个字符串中,出现在一个字符数组中任意字符最后一次出现的位置。

4.1.5 格式化字符串
Format方法用于创建格式化的字符串及连接多个字符串对象。如果读者熟悉C语言中的sprintf()方法,可以了解两者有类似之处。Format方法也有多个重载形式,最常用的为:

Ø static string Format(string format, params object[] args);

其中,参数format用于指定返回字符串的格式,而args为一系列变量参数。可以通过下面的实例来掌握其使用方法。

代码4-9 使用Format设置字符串格式:Default.aspx.cs

1. //Format

2. String newStr=String.Format("0,1!",strA,strB); //Hello,World!

在format参数中包含一些用大括号扩起来的数字,如0、1,这些数字分别一一对应于args参数数组中的变量。在生成结果字符串时,将使用这些变量代替i。需要说明的是,这些变量并不要求必须为String类型。

在特定的应用中,Format方法非常方便。例如,想要输出一定格式的时间字符串,便可以使用Format方法,如下面代码所示:

newStr=String.Format("CurrentTime=0:yyyy-MM-dd",System.DateTime.Now);//形如:2007-05-19

其中,格式字符串“yyyy-MM-dd”指定返回时间的格式如“2007-05-19”,其定义可参考System.Globalization.DateTimeFormatInfo类。

4.1.6 连接字符串
String类包含了两个连接字符串的静态方法,它们是Concat和Join,下面分别进行介绍。

1.Concat方法
Concat方法用于连接两个或多个字符串。如果读者熟悉C语言中的strcat()方法,可以了解两者有类似之处。Concat方法也有多个重载形式,最常用的为:

Ø static string Concat(params string[]values);

其中,参数values用于指定所要连接的多个字符串,可以通过下面的实例来掌握其使用方法。

代码4-10 使用Concat连接字符串:Default.aspx.cs

1. //Concat

2. newStr="";

3. newStr=String.Concat(strA," ",strB);

4. Console.WriteLine(newStr); //"Hello World"

2.Join方法
Join方法利用一个字符数组和一个分隔符串构造新的字符串。它常常用于把多个字符串连接在一起,并用一个特殊的符号来分隔开。Join的常用形式为:

Ø static string Join(string separator, string[]value);

其中,参数separator 为指定的分隔符,而values用于指定所要连接的多个字符串数组,下例用“^^”分隔符把“Hello”和“World”连起来。

代码4-11 使用Join连接字符串:Default.aspx.cs

1. //Join

2. newStr="";

3. String[] strArr=strA,strB;

4. newStr=String.Join("^^",strArr);

5. Console.WriteLine(newStr); //"Hello^^World"

3.连接运算符“+”
String支持连接运算符“+”,可以方便的连接多个字符串,如下例把“Hello”和“World”连接起来。

代码4-12 使用“+”连接字符串:Default.aspx.cs

1. //使用+

2. newStr="";

3. newStr=strA+strB; //"HelloWorld"

4.1.7 拆分字符串
使用Join方法,可以利用一个分隔符把多个字符串连接起来。反过来,使用Split方法可以把一个整串,按照某个分隔字符或者字符串,拆分成一系列小的字符串。例如,把整串“Hello^^World”按照字符“^”进行拆分,可以得到3个小的字符串:“Hello”、“”(空串)和“World”;根据字符串“^^”,则可以得到两个小的字符串:“Hello”和“World”。

1.根据字符拆分
根据字符拆分的Split重载方法是:

Ø public string[]Split(params char[]separator);

其中,参数separator数组包含分隔符。下例把“Hello^^World”根据“^”进行拆分。

代码4-13 根据字符分裂分隔符字符串:Default.aspx.cs

1. //Split

2. newStr="Hello^^World";

3. char[] separator='^';

4. String[] splitStrings=new String[100];

5. splitStrings=newStr.Split(separator);

6. int i=0;

7. while(i<splitStrings.Length)

8.

9. Console.WriteLine(splitStrings[i])

10. i++;

11.

输出结果为:

Hello

World

2.根据字符串拆分
根据字符拆分的Split重载方法是:

Ø public string[]Split(string[] separator,StringSplitOptions options)

其中,参数separator数组是分隔字符串数组;参数options取值RemoveEmptyEntries时,将过滤空的数组元素,若取值one则返回。下例把“Hello^^World”根据“^^”进行拆分。

代码4-14 根据字符串分裂分隔符字符串:Default.aspx.cs

1. //split

2. String[] separator = new string[] strB.Text ;

3. String[] splitStrings=new String[100];

4. splitStrings=newStr.Split(separator,StringSplitOptions.None);

5. int i=0;

6. while(i<splitStrings.Length)

7.

8. Page.Response.Write(splitStrings[i] + "<br />");

9. i++;

10.

输出结果为:

Hello

World

4.1.8 插入字符串
String类包含了在一个字符串中插入新元素的方法Insert,用于在字符串的任意位置插入任意的字符:

Ø public string Insert(int startIndex, string value);

其中,参数startIndex用于指定所要插入的位置,从0开始索引;value指定所要插入的字符串。下例中,在“Hello”的字符“H”后面插入“World”,构造一个串“HWorldello”。

代码4-15 使用Insert插入字符串:Default.aspx.cs

1. //Insert

2. newStr="";

3. newStr=strA.Insert(1,strB); //"HWorldello"

4.1.9 填充字符串
有时候,可能需要对一个字符串进行填充,例如,想要把“Hello”变为长度为20个字符的串,并使用字符“*”进行填充,即变为“***************Hello”。PadLeft方法可以实现这个功能,用于在一个字符串的左侧进行字符填充,使其达到一定的长度。PadLeft有两种重载形式:

Ø public string PadLeft(int totalWidth);

Ø public string PadLeft(int totalWidth, char paddingChar);

其中,参数totalWidth指定了填充后的字符长度,而paddingChar指定所要填充的字符,如果默认,则填充空格符号。

下例中,实现了对“Hello”的填充操作,使其长度变为20。

代码4-16 使用PadLeft填充字符串:Default.aspx.cs

1. //PadLeft

2. newStr="";

3. newStr=strA.PadLeft(20,'*'); //"***************Hello "

同PadLeft类似,PadRight可以实现对一个字符在其右侧的填充功能,对其不作赘述。

4.1.10 删除字符串
String类包含了删除一个字符串的方法,可以用Remove方法在任意位置删除任意长度的字符,也可以使用Trim/TrimEnd/TrimStart方法剪切掉字符串中的一些特定字符。

1.Remove方法
Remove方法从一个字符串的制定位置开始,删除指定数量的字符。最常用的为:

Ø public string Remove( int startIndex, int count);

其中,参数startIndex用于指定所要开始删除的位置,从0开始索引;count指定所要删除的字符数量。下例中,把“Hello”中的“ell”删掉。

代码4-17 使用Remove删除字符串:Default.aspx.cs

1. //Remove

2. newStr="";

3. newStr=strA.Remove(1,3); //"Ho"

2.Trim/TrimStart/TrimEnd方法
若想把一个字符串首尾处的一些特殊字符剪切掉,如去掉一个字符串首尾的空格等,可以使用String的Trim方法。其形式为:

Ø public string Trim ();

Ø public string Trim (params char[]trimChars);

其中,参数trimChars数组包含了指定了所要去掉的字符,如果默认,则删除空格符号。下例中,实现了对“@Hello# $”的净化,去掉首尾的特殊符号。

代码4-18 使用Trim去掉首尾的特殊符号:Default.aspx.cs

1. //Trim

2. newStr="";

3. char[] trimChars='@','#','$',' ';

4. String strC="@Hello# $";

5. 串catorldnewStr=strC.Trim(trimChars); //"Hello"

另外,同Trim类似,TrimStart和TrimEnd分别剪切掉一个字符串开头和结尾处的特殊字符。

4.1.11 复制字符串
String类包含了复制字符串方法Copy和CopyTo,可以完成对一个字符串及其一部分的复制操作。

1.Copy方法
若想把一个字符串复制到另一个字符串中,可以使用String的静态方法Copy来实现,其形式为:

Ø static string Copy(string str);

其中,参数str为需要复制的源字符串,方法返回目标字符串。下例中,把TextBoxA种的字符串复制到newStr中。

代码4-19 使用Copy复制字符串:Default.aspx.cs

1. //Copy

2. newStr="";

3. newStr=String.Copy(strA); //"Hello"

2.CopyTo方法
CopyTo方法可以实现Copy同样的功能,但功能更为丰富,可以复制源字符串中的一部分到一个字符数组中。另外,CopyTo不是静态方法,其形式为:

Ø public void CopyTo(int sourceIndex, char[] destination, int destinationIndex, int count);

其中,参数sourceIndex为需要复制的字符起始位置,destination为目标字符数组,destinationIndex制定目标数组中的开始存放位置,而count指定所要复制的字符个数。下例中,把strA字符串“Hello”中的“ell”复制到newCharArr中,并在newCharArr中从第2个元素开始存放。

代码4-20 使用CopyTo复制字符串:Default.aspx.cs

1. //CopyTo

2. char[] newCharArr=new char[100];

3. strA.CopyTo(2,newCharArr,0,3); //"Hel"

4.1.12 替换字符串
如果想要替换掉一个字符串中的某些特定字符或者某个子串,可以使用Replace方法来实现,其形式为:

Ø public string Replace(char oldChar, char newChar);

Ø public string Replace(string oldValue, string oldValue,);

其中,参数oldChar和oldValue为待替换的字符和子串,而newChar和newValue为替换后的新字符和新子串。下例把“Hello”通过替换变为“Hero”。

代码4-21 使用Replace替换字符串:Default.aspx.cs

1. //Replace

2. newStr=strA.Replace("ll","r"); //Hero

4.1.13 更改大小写
String提供了方便转换字符串中所有字符大小写的方法ToUpper和ToLower。这两个方法没有输入参数,使用也非常简单。下例首先把“Hello”转换为“HELLO”,然后在变为小写形式“hello”。

代码4-22 使用ToUpper更改字符串大小写:Default.aspx.cs

1. //ToUpper

2. newStr=strA.ToUpper(); //HELLO

3. //ToLower

4. newStr=strA.ToLower(); //hello
参考技术A 你的问题具体些,你要那么多方法干嘛?
如果是所有方法的法,很多的,方法加上扩展方法有100个左右吧。

你装了VS的话,用一个string变量,智能提示会列出来的,还有可以看下MSDN。

估计你问的是ToString(format)格式方式的用法吧,下面是这方面的介绍:

•// C 货币
•2.5.ToString("C"); // ¥2.50
•// D 10进制数
•25.ToString("D5"); // 25000
•// E 科学型
•25000.ToString("E"); // 2.500000E+005
•// F 固定点
•25.ToString("F2"); // 25.00 "F?"表示保持几位小数
•// G 常规
•2.5.ToString("G"); // 2.5
•// N 数字
•2500000.ToString("N"); // 2,500,000.00
•// X 16进制
•255.ToString("X"); // FF

•// C# 日期格式
•DateTime dt = DateTime.Now;
•dt.ToString();//2005-11-5 13:21:25
•dt.ToFileTime().ToString();//127756416859912816
•dt.ToFileTimeUtc().ToString();//127756704859912816
•dt.ToLocalTime().ToString();//2005-11-5 21:21:25
•dt.ToLongDateString().ToString();//2005年11月5日
•dt.ToLongTimeString().ToString();//13:21:25
•dt.ToOADate().ToString();//38661.5565508218
•dt.ToShortDateString().ToString();//2005-11-5
•dt.ToShortTimeString().ToString();//13:21
•dt.ToUniversalTime().ToString();//2005-11-5 5:21:25
•dt.Year.ToString();//2005
•dt.Date.ToString();//2005-11-5 0:00:00
•dt.DayOfWeek.ToString();//Saturday
•dt.DayOfYear.ToString();//309
•dt.Hour.ToString();//13
•dt.Millisecond.ToString();//441
•dt.Minute.ToString();//30
•dt.Month.ToString();//11
•dt.Second.ToString();//28
•dt.Ticks.ToString();//632667942284412864
•dt.TimeOfDay.ToString();//13:30:28.4412864
•dt.ToString();//2005-11-5 13:47:04
•dt.AddYears(1).ToString();//2006-11-5 13:47:04
•dt.AddDays(1.1).ToString();//2005-11-6 16:11:04
•dt.AddHours(1.1).ToString();//2005-11-5 14:53:04
•dt.AddMilliseconds(1.1).ToString();//2005-11-5 13:47:04
•dt.AddMonths(1).ToString();//2005-12-5 13:47:04
•dt.AddSeconds(1.1).ToString();//2005-11-5 13:47:05
•dt.AddMinutes(1.1).ToString();//2005-11-5 13:48:10
•dt.AddTicks(1000).ToString();//2005-11-5 13:47:04
•dt.CompareTo(dt).ToString();//0
•dt.Add(?).ToString();//问号为一个时间段
•dt.Equals("2005-11-6 16:11:04").ToString();//False
•dt.Equals(dt).ToString();//True
•dt.GetHashCode().ToString();//1474088234
•dt.GetType().ToString();//System.DateTime
•dt.GetTypeCode().ToString();//DateTime
•dt.GetDateTimeFormats('s')[0].ToString();//2005-11-05T14:06:25
•dt.GetDateTimeFormats('t')[0].ToString();//14:06
•dt.GetDateTimeFormats('y')[0].ToString();//2005年11月
•dt.GetDateTimeFormats('D')[0].ToString();//2005年11月5日
•dt.GetDateTimeFormats('D')[1].ToString();//2005 11 05
•dt.GetDateTimeFormats('D')[2].ToString();//星期六 2005 11 05
•dt.GetDateTimeFormats('D')[3].ToString();//星期六 2005年11月5日
•dt.GetDateTimeFormats('M')[0].ToString();//11月5日
•dt.GetDateTimeFormats('f')[0].ToString();//2005年11月5日 14:06
•dt.GetDateTimeFormats('g')[0].ToString();//2005-11-5 14:06
•dt.GetDateTimeFormats('r')[0].ToString();//Sat, 05 Nov 2005 14:06:25 GMT
•string.Format("0:d",dt);//2005-11-5
•string.Format("0:D",dt);//2005年11月5日
•string.Format("0:f",dt);//2005年11月5日 14:23
•string.Format("0:F",dt);//2005年11月5日 14:23:23
•string.Format("0:g",dt);//2005-11-5 14:23
•string.Format("0:G",dt);//2005-11-5 14:23:23
•string.Format("0:M",dt);//11月5日
•string.Format("0:R",dt);//Sat, 05 Nov 2005 14:23:23 GMT
•string.Format("0:s",dt);//2005-11-05T14:23:23
•string.Format("0:t",dt);//14:23
•string.Format("0:T",dt);//14:23:23
•string.Format("0:u",dt);//2005-11-05 14:23:23Z
•string.Format("0:U",dt);//2005年11月5日 6:23:23
•string.Format(<span style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb)
参考技术B http://msdn.microsoft.com/en-us/library/system.string_methods.aspx
这里罗列了几乎所有关于String的方法,一共100多种。
实际我们经常应用的还不就那几种吗,你是想问什么问题呢?
参考技术C 说再多,还不如反复把string拿来做测试
多写一些小的程序

C#根据用户输入字符串,输出大写字母有几个,小写字母有几个

 

static void Main(string[] args)
{

// 根据用户输入字符串,输出大写字母有几个,小写字母有几个。
Console.WriteLine("请输入一行英文代码");
string s = Console.ReadLine(); //用一个字符串接受输入值。
int i = 0;
int j = 0;// i是大写个数, j是小写个数。
foreach (char s1 in s)
{
if (s1 >= ‘A‘ && s1 <= ‘Z‘)
{
i++;
}
else if(s1>=‘a‘&&s1<=‘z‘)
{
j++;
}
continue; // 如果输入的不是英文字母,则跳出循环。
}
Console.WriteLine("大写字母有{0}个,小写字母有{1}个。",i,j);

}

运行结果:

技术分享图片



















以上是关于c#的string的方法有几个的主要内容,如果未能解决你的问题,请参考以下文章

C#有几个版本?C#和.net版本有什么区别?C#和.net对应版本?

C#有几个版本?C#和.net版本有什么区别?C#和.net对应版本?

C#中String类的几个方法(IndexOfLastIndexOfSubstring)

C# async/await 究竟是有几个线程

C# async/await 究竟是有几个线程

C# async/await 究竟是有几个线程