c#中处理字符串常⽤的函数及⽅法详细说明
⼀、string关键字与StringBuilder类
C# 字符串是使⽤ string 关键字声明的⼀个字符数组。字符串是使⽤引号声明的,如下例所⽰:
string s = "Hello, World!";
字符串对象是“不可变的”,即它们⼀旦创建就⽆法更改。对字符串进⾏操作的⽅法实际上返回的是新的字符串对象。因此,出于性能⽅⾯的原因,⼤量的连接或其他涉及字符串的操作应当⽤ StringBuilder 类执⾏,如下所⽰:
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("one ");
sb.Append("two ");
sb.Append("three");
string str = sb.ToString();
⼆、字符串使⽤
1、转移字符“\”
字符串中可以包含转义符,如“\n”(新⾏)和“\t”(制表符)。
如果希望包含反斜杠,则它前⾯必须还有另⼀个反斜杠,如“\\”。
2、“@”符号
@ 符号会告知字符串构造函数忽略转义符和分⾏符。
因此,以下两个字符串是完全相同的:
string p1 = "Documents\\My Files\\";
string p2 = @" Documents\My Files\";
3、ToString()
如同所有从 Object 派⽣的对象⼀样,字符串也提供了 ToString ⽅法,⽤于将值转换为字符串。此⽅法可⽤于将数值转换为字符串,如下所⽰:
int year = 1999;
string msg = "Eve was born in " + year.ToString();
System.Console.WriteLine(msg); // outputs "Eve was born in 1999"
另外,可以通过参数格式化ToString()的显⽰输出。如,对于时间类型格式,可以通过ToString()⽅法⾃定义时间显⽰格式。如:System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
//outputs "2009-03-11 18:05:16.345"
//"MM":指定⽉份为2位字符串,不⾜2位则前⽅补"0";"M":为⽉份数值转换的字符串;
//"HH":表⽰24⼩时制的⼩时;"hh"表⽰12⼩时制的⼩时;
4、SubString()
格式:Substring(int startindex, int len)
⽤于获取源字符串指定起始位置startindex,指定长度len的字符串。
参数Startindex索引从0开始,且最⼤值必须⼩于源字符串的长度,否则会编译异常;
参数len的值必须不⼤于源字符串索引指定位置开始,之后的字符串字符总长度,否则会出现异常;
⽰例:
string s4 = "Visual C# Express";
System.Console.WriteLine(s4.Substring(7, 2)); // outputs "C#"
System.Console.WriteLine(s4.Replace("C#", "Basic")); // outputs "Visual Basic Express"
5、Replace()
格式:Replace(string oldValue, string newValue)
⽤于字符串中特定字符串组合的替换,即将源字符串中的所有oldValue 字符串替换为 newValue 字符串。
⽰例:
string s5 = "Visual C# Express";
System.Console.WriteLine(s5.Replace("C#","VB")); // outputs "Visual VB Express"
6、Split()
将字符串拆分为⼦字符串(如将句⼦拆分为各个单词)是⼀个常见的编程任务。Split() ⽅法使⽤分隔符(如空格字符)char 数组,并返回⼀个⼦字符串数组。您可以使⽤ foreach 访问此数组。
⽰例:
char[] delimit = new char[] { ' ' };
string s14 = "The cat sat on the mat.";
foreach (string substr in s14.Split(delimit))
{
System.Console.WriteLine(substr);
}
writeline函数此代码将在单独的⾏上输出每个单词,如下所⽰:
The
cat
sat
on
the
mat.
下⾯的代码⽰例演⽰如何使⽤ System.String.Split ⽅法分析字符串。此⽅法返回⼀个字符串数组,其中每个元素是⼀个单词。作为输
⼊,Split 采⽤⼀个字符数组指⽰哪些字符被⽤作分隔符。本⽰例中使⽤了空格、逗号、句点、冒号和制表符。⼀个含有这些分隔符的数组被传递给 Split,并使⽤结果字符串数组分别显⽰句⼦中的每个单词。
⽰例:
class TestStringSplit
{
static void Main()
{
char[] delimiterChars = { ' ', ',', '.', ':', '\t' };
string text = "one\ttwo three:four,five six seven";
System.Console.WriteLine("Original text: '{0}'", text);
string[] words = text.Split(delimiterChars);
System.Console.WriteLine("{0} words in text:", words.Length);
foreach (string s in words)
{
System.Console.WriteLine(s);
}
}
输出:
Original text: 'one two three:four,five six seven'
7 words in text:
one
two
three
four
five
six
seven
另外,还可通过正则表达式Regex.Split()的⽅法,通过字符串分隔字符串。⽰例:
using System.Text.RegularExpressions; //需要引⽤正则表达式的命名空间string str="aaajsbbbjsccc";
string[] sArray=Regex.Split(str,"js",RegexOptions.IgnoreCase); //正则表达式// RegexOptions.IgnoreCase 表⽰忽略字母⼤⼩写
foreach (string i in sArray) Response.Write(i.ToString() + "<br>");
输出:
aaa
bbb
ccc
7、Trim()
Trim() 从当前 String 对象移除所有前导空⽩字符和尾部空⽩字符。
⽰例:
string s7 = " Visual C# Express ";
System.Console.WriteLine(s7); // outputs " Visual C# Express " System.Console.WriteLine(s7.Trim()); // outputs "Visual C# Express"
8、ToCharArray()
格式:ToCharArray(int startindex,int len)
⽤于将字符复制到字符数组。
⽰例:
string s8 = "Hello, World";
char[] arr = s8.ToCharArray(0, s8.Length);
foreach (char c in arr)
{
System.Console.Write(c); // outputs "Hello, World"
⽰例:修改字符串内容
字符串是不可变的,因此不能修改字符串的内容。但是,可以将字符串的内容提取到⾮不可变的窗体中,并对其进⾏修改,以形成新的字符串实例。
下⾯的⽰例使⽤ ToCharArray ⽅法来将字符串的内容提取到 char 类型的数组中。然后修改此数组中的某些元素。之后,使⽤ char 数组创建新的字符串实例。
class ModifyStrings
{
static void Main()
{
string str = "The quick brown fox jumped over the fence";
System.Console.WriteLine(str);
char[] chars = str.ToCharArray();
int animalIndex = str.IndexOf("fox");
if (animalIndex != -1)
{
chars[animalIndex++] = 'c';
chars[animalIndex++] = 'a';
chars[animalIndex] = 't';
}
string str2 = new string(chars);
System.Console.WriteLine(str2);
}
}
输出:
The quick brown fox jumped over the fence
The quick brown cat jumped over the fence
9、利⽤索引访问字符串中的各个字符
格式:str[int index]
⽰例:逆序排列字符串
string s9 = "Printing backwards";
for (int i = 0; i < s9.Length; i++)
{
System.Console.Write(s9[s9.Length - i - 1]); // outputs "sdrawkcab gnitnirP"
}
10、更改⼤⼩写,ToUpper() 和 ToLower()
若要将字符串中的字母更改为⼤写或⼩写,可以使⽤ ToUpper() 或 ToLower()。如下所⽰:
string s10 = "Battle of Hastings, 1066";
System.Console.WriteLine(s10.ToUpper()); // outputs "BATTLE OF HASTINGS 1066"
System.Console.WriteLine(s10.ToLower()); // outputs "battle of hastings 1066"
11、⽐较
⽐较两个字符串的最简单⽅法是使⽤ == 和 != 运算符,执⾏区分⼤⼩写的⽐较。
string color1 = "red";
string color2 = "green";
string color3 = "red";
if (color1 == color3)
{
System.Console.WriteLine("Equal");
}
if (color1 != color2)
{
System.Console.WriteLine("Not equal");
}
12、CompareTo()
字符串对象也有⼀个 CompareTo() ⽅法,它根据某个字符串是否⼩于 (<) 或⼤于 (>) 另⼀个,返回⼀个整数值。⽐较字符串时使⽤ Unicode 值,⼩写的值⼩于⼤写的值。
⽰例:
string s121 = "ABC";
string s122 = "abc";
if (s121.CompareTo(s122) > 0)
{
System.Console.WriteLine("Greater-than");
}
else
{
System.Console.WriteLine("Less-than");
}
13、字符串索引
若要在⼀个字符串中搜索另⼀个字符串,可以使⽤ IndexOf()。如果未到搜索字符串,IndexOf() 返回 -1;否则,返回它出现的第⼀个位置的索引(从零开始)。
⽰例:
string s13 = "Battle of Hastings, 1066";
System.Console.WriteLine(s13.IndexOf("Hastings")); // outputs 10
System.Console.WriteLine(s13.IndexOf("1967")); // outputs -1
string 类型(它是 System.String 类的别名)为搜索字符串的内容提供了许多有⽤的⽅法。下⾯的⽰例使⽤ IndexOf、LastIndexOf、StartsWith 和 EndsWith ⽅法。
⽰例:
class StringSearch
{
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论