字符串比較
Compare方法
Int Compare(string strA, string strB) Int Compare(string strA, string strB, bool ignoreCase) Int Compare(string strA, string strB, bool ignoreCase, CultureInfo) Int Compare(string strA, int indexA, string strB, int indexB, int length) Int Compare(string strA, int indexA, string strB, int indexB, int length, bool ignoreCase)
- strA,strB--待比較的两个字符串;
- ignoreCase--指定是否考虑大写和小写,当取true时忽略大写和小写;
- indexA,indexB--须要比較两个字符串的子串时,indexA和indexB分别为子字符串的起始位置;
- length--待比較字符串的最大长度;
- culture--字符串的区域性信息。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string strA = "你好"; string strB = "你好吗"; // 字符串比較 Console.WriteLine(string.Compare(strA, strB)); Console.WriteLine(string.Compare(strA, strA)); Console.WriteLine(string.Compare(strB, strA)); } } }输出:
说明:CompareOrdinal方法和Compare方法很类似,但不考虑区域性问题,以下不再具体介绍CompareOrdinal方法。
CompareTo方法
- CompareTo方法不是静态方法,能够通过一个String对象调用;
- CompareTo方法没有重载形式,仅仅能依照大写和小写敏感的方式比較两个整串。
string strA = "你好"; string strB = "你好吗"; Console.WriteLine(strA.CompareTo(strB));
Equals方法
假设两个字符串相等,Equals()返回值为true;否则,返回false。string strA = "你好"; string strB = "你好吗"; Console.WriteLine(string.Equals(strA, strB)); Console.WriteLine(strA.Equals(strB));
定位字符及子串
定位子串是指一个字符串中寻找当中包括的子串或者某个字符,String类中常见方法包括StartsWith/EndsWith、IndexOf/LastIndexOf 以及 IndexOfAny/LastIndexOfAny。StartsWith/EndsWith
Public bool StartsWith(String value);当中,value表示待判定的子字符串。
EndsWith方法推断一个字符串对象是否以还有一个子字符串结尾。
IndexOf/LastIndexOf
Int IndexOf(char value) Int IndexOf(char value, int startIndex) Int IndexOf(char value, int startIndex, int count)定位子串
int IndexOf(string value) int IndexOf(string value, int startIndex) int IndexOf(string value, int startIndex, int count)各參数的含义是:
- value--带定位的字符或子串;
- startIndex--在总串中開始搜索的起始位置;
- count--在总串中从起始位置開始搜索的字符数。
string strA = "Hello"; Console.WriteLine(strA.IndexOf('l'));同IndexOf类似,LastIndexOf方法用于搜索在一个字符串中,某个特定的字符或子串最后一次出现的位置。
IndexOfAny/LastIndexOfAny
IndexOfAny方法功能与IndexOf类似,差别在于它能够在一个字符串中搜索一个字符数组中随意字符第一次出现的位置。相同,该方法区分大写和小写,并从字符串的首字符開始以0计数。假设字符串中不包括这个字符或子串,则返回-1。int IndexOfAny(char[] anyOf) int IndexOfAny(char[] anyOf, int startIndex) int IndexOfAny(char[] anyOf, int startIndex, int count)各參数的含义:
- anyOf--待定位的字符数组,方法将返回这个数组中随意一个字符第一次出现的位置;
- startIndex--在总串中開始搜索的起始位置;
- count--在总串中从起始位置開始搜索的字符数。
string strA = "Hello"; char[] anyOf = { 'e', 'o' }; Console.WriteLine(Convert.ToString(strA.IndexOfAny(anyOf))); Console.WriteLine(Convert.ToString(strA.LastIndexOfAny(anyOf)));同IndexOfAny类似,LastIndexOfAny用于在一个字符串中搜索一个字符数组中随意字符最后一次出现的位置。
格式字符串
public static string Format(string Format, params object[] arge);
- format--用于指定返回的字符串的格式;
- args--一系列变量參数。
string newStr = string.Format("{0},{1}!!!", strA, strB);在特定的应用中,Format方法也非常方便。比如,将当前时间格式为"YYYY-MM-DD"形式:
DateTime DTA = DateTime.Now(); string strB = string.Format("{0:d}", DTA);说明:{0:d}表示将时间格式化为短日期表示形式。
截取字符串
截取字符串须要用到String类的Substring方法,该方法用来从字符传中检索子字符串,有下面重载形式:从字符串中检索子字符串,子字符串从指定的字符位置開始
public string Substring(int startIndex)startIndex--字符串中子字符串的起始字符位置。
从字符串中检索子字符串,子字符串从指定的字符位置開始且具有指定的长度
public string Substring(int startIndex, int length)startIndex--字符串中子字符串的起始字符位置。
分隔字符串
public string[] split(params char[] separator);separator--一个数组,包括分隔符。
namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string strA = "Hello^^world"; char[] separator={'^'}; string[] splitstrings=new string[100]; splitstrings=strA.Split(separator); int i= 0; while(i<splitstrings.Length) { Console.WriteLine("item{0}:{1}",i,splitstrings[i]); i++; } Console.ReadLine(); } } }输出:
插入和填充字符串
String类能够用Insert方法在字符串的任何位置插入随意字符。而使用PadLeft/PadRight方法,能够在一个字符串的左右两側能够进行字符填充。Insert方法
public string Insert(int startIndex, string value);startIndex--用于指定要插入的位置,索引从0開始。
namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string strA = "Hello^^world"; string strB = "Good morning!"; string newStr = strA.Insert(1, strB); Console.WriteLine(newStr); Console.ReadLine(); } } }输出:
PadLeft/PadRight
PadLeft用于在一个字符串左側进行字符填充,使其达到一定的长度。有下面重载形式:public string PadLeft(int totalWidth) public string PadLeft(int totalWidth, char paddingChar)totalWidth--指定填充后的字符长度。
namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string strA = "Hello^^world"; string newStr; newStr = strA.PadLeft(16, '*'); Console.WriteLine(newStr); Console.ReadLine(); } } }输出:
PadRight功能类似,不再赘述。
删除和剪切字符串
String类使用Remove在字符串任何位置删除随意长度子字符串,也能够使用Trim、TrimEnd和TrimStart剪切掉字符串中的一些特定字符串。Remove方法
Public String Remove(int startIndex, int count);startIndex--用于指定開始删除的位置,索引从0開始。
namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string strA = "Hello^^world"; string newStr; newStr = strA.PadLeft(16, '*'); Console.WriteLine(newStr); Console.WriteLine(newStr.Remove(2, 3)); Console.ReadLine(); } } }输出:
Trim方法
从字符串的開始位置和末尾移除空白字符的全部匹配项。
public string Trim()返回值--一个新String,相当于将指定字符串首位空白字符移除后形成的字符串。
从字符串的開始位置和末尾移除数组中指定的一组字符的全部匹配项
public string Trim(params char[] trimChars)trimChars--数组包括了指定要去掉的字符,假设缺省,则删除空格符号)。
namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string strA = "Hello^^world"; string newStr; newStr = strA.PadLeft(16, '*'); Console.WriteLine(newStr); char[] strB={'*','d'}; Console.WriteLine(newStr.Trim(strB)); Console.ReadLine(); } } }输出:
TrimStart方法
TrimStart方法用来从字符串的開始位置移除数组中指定的一组字符的全部匹配项。public string TrimStart(params char[] trimChars)trimChars--数组包括了指定要去掉的字符,假设缺省,则删除空格符号)。
返回值--从指定字符串的開始位置移除trimChars中字符的全部匹配项后剩余的String。
namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string strA = "Hello^^world"; char[] strB = { 'H', 'o' }; string strC = strA.TrimStart(strB); Console.WriteLine(strC); Console.Read(); } } }输出:
PS:注意字符区分大写和小写。如上面改为"h",则仍然输出Hello^^World。
TrimEnd方法
复制字符串
Copy方法
public static string Copy(string str);str--为须要复制的源字符串,方法返回目标字符串。
CopyTo方法
public void CopyTo(int sourceIndex, char[] destination, int destinationIndex, int count)各參数的含义:
- sourceIndex--须要复制的字符的起始位置。
- destination--目标字符数组。
- destinationIndex--指定目标数组的開始存放位置。
- count--指定要复制的字符个数。
namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string strA = "Hello^^world"; char[] strB = new char[100]; strA.CopyTo(3, strB, 0, 3); Console.WriteLine(strB); Console.Read(); } } }输出:
替换字符串
Replace方法
public string Replace(char oldChar,char newChar) public string Replace(string oldValue,string newValue)
- oldChar--待替换的字符。
- oldChar--待替换的子串。
- newChar--替换后的新字符。
- newValue--替换后的新子串。
namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string strA = "Hello"; string strB=strA.Replace("ll","r"); Console.WriteLine(strB); Console.Read(); } } }输出:
StringBuilder的定义和使用
StringBuilder的定义
StringBuilder myStringBuilder=new StringBuilder();StringBuilder的构造函数:
- StringBuilder()--初始化StringBuilder类的新实例。
- StringBuilder(Int32)--使用指定的容量初始化StringBuilder类的新实例。
- StringBuilder(String)--使用指定的字符串初始化StringBuilder类的新实例。
- StringBuilder(Int32,Int32)--初始化StringBuilder类的新实例,该类起始于指定容量而且可增长到指定的最大容量。
- StringBuilder(String,Int32)--使用指定的字符串和容量初始化StringBuilder类的新实例。
- StringBuilder(String,Int32,Int32,Int32)--使用指定的子字符串和容量初始化StringBuilder类的新实例。
StringBuilder使用
- Capacity--获取或设置可包括在当前实例所分配的内存中的最大字符数。
- Chars--获取或设置此实例中指定字符位置处的字符。
- Length--获取或设置此实例的长度。
- MaxCapacity--获取此实例的最大容量。
- Append--在此实例的结尾追加指定对象的字符串表示形式。
- AppendFormat--向此实例追加包括零个或很多其它格式规范的格式化字符串。每一个格式规范由对应对象的字符串表示形式替换。
- AppendLine--将默认的行终止符(或指定字符串的副本和默认的行终止符)追加到此实例的结尾。
- CopyTo--将此实例的指定段中的字符拷贝到目标Char数组的指定段中。
- EnsureCapacity--将确保StringBuilder的此实例的容量至少是指定值。
- Insert--将指定对象的字符串表示形式插入到此实例中的指定字符位置。
- Remove--将指定范围的字符从此实例中移除。
- Replace--将此实例中全部的指定字符或字符串替换为其它的指定字符或字符串。
- ToString--将StringBuilder的值转化为String。
namespace ConsoleApplication1 { class Program { static void Main(string[] args) { StringBuilder Builder = new StringBuilder("Hello", 100); Builder.Append(" World"); Console.WriteLine(Builder); Builder.AppendFormat("{0} End", "@"); Console.WriteLine(Builder); Builder.AppendLine("This is one line."); Console.WriteLine(Builder); Builder.Insert(0, "Begin"); Console.WriteLine(Builder); Builder.Remove(19, Builder.Length - 19); Console.WriteLine(Builder); Builder.Replace("Begin", "Begin:"); Console.WriteLine(Builder); Console.ReadLine(); } } }输出: