.net类库学习——System.String

String对象的存储

String对象存储在堆中。在每个String对象被创建之前会在堆中检查是否已经存在该值的对象,有的话取的该引用,没有则新建一个。

eg: 

1 string str1 = "test";
2 
3 string str2 = "test1";
4 
5 str1 = "test1";
6 
7 //当str1重新赋值为"test1"时,会在堆中检测是否存在值为"test1"的String对象,如有则把引用赋给str1。如没有则新建。

 

System.String重要方法

 

Clone()

拷贝的是该String对象的引用,但相对与深拷贝。

 

Compare(strA,strB)

比较2个字符串,从前往后逐个字符进行比较。规则为:(特殊符号<数字<字母<a<A<b<B...以此类推).

返回值:

StrA>StrB return 1

StrA=StrB return 0

StrA<StrB retrun -1

 

Compare(String, String, StringComparison)

使用指定规则比较2个字符串。

StringComparison枚举

CurrentCulture                     //根据当前区域信息进行比较
CurrentCultureIgnoreCase     //根据当前区域信息进行不区分大小写比较
InvariantCulture                   //根据固定区域信息进行比较
InvariantCultureIgnoreCase   //根据固定区域信息进行不区分大小写比较
Ordinal                               //进行byte级别的比较(非语言比较),根据char的ASCII值进行逐个比较
OrdinalIgnoreCase               //进行byte级别的不区分大小写比较(非语言比较),根据char的ASCII值进行逐个比较

 

详见:http://www.cnblogs.com/zhw511006/archive/2010/07/09/1774591.html

 

CompareOrdinal(String ,String)

相当于Compare(String,String,StringComparision.Ordinal)

 

CompareOrdinal(String strA, Int32 startIndexA, String strB, Int32 startIndexB, Int32 length)

CompareOrdinal两个字符串的子字符串

 

CompareTo(Object)\CompareTo(String)  实例方法

--Object 必须可隐式转换为String

用当前字符串跟目标字符串做比较

eg:

strA.CompareTo(StrB)  <= 等价于 => Compare(strA,StrB)

 

Concat(object)、Concat(object[])、Concat(object1,object2,object3...)、Concat<T>(IEnumerable<T>)

返回连接参数的字符串,即object.ToString()后再连接返回

 

Concat(string)、Concat(string[])、Concat(string1,sting2,sting3...)

返回连接参数的字符串

 

Contains(String)

返回一个值,该值指示指定的子串是否出现在此字符串中。

 

EndsWith(String)

确定此字符串实例的结尾是否与指定的字符串匹配。

匹配则返回true,否则为false

 

EndWith(string,StringCompare)

确定使用指定的比较选项进行比较时此字符串实例的结尾是否与指定的字符串匹配。

 

StartsWith(String)、StartsWith(String,StringCompare)

确定此字符串实例是否以指定字符串开头,类似EndWith

 

Equals

比较2实例是否具有相同的值。

 

Format

 

格式化字符串。String.Format("{0},{1}",a,b);

 

GetEnumerator()

获取字符串的集合,返回一个CharEnumerator对象,可通过 CharEnumerator对象的.Current属性和MoveNext方法访问遍历获得字符对象。

也可通过下列方法遍历所有字符。

string str3 = "adlsfjladjflasdjflskjdfkl";

foreach (char c in str3)
{
       Console.WriteLine(c);
}    


IndexOf(Char)、IndexOf(String)、IndexOf(Char char,[Int32 startIndex],[Int32 length],[StringCompare])、IndexOf(String,[Int32 startIndex],[Int32 length],[StringCompare])、

指定字符串在此实例中的第一个匹配项的从零开始的索引。(该搜索从指定字符位置开始)。

返回值:如果找到该字符串,则为 value 的从零开始的索引位置;如果未找到该字符串,则为 -1 

 

 

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

 

匹配字符数组的任意字符在字符串中的从零开始的索引位置;如果未找到 anyOf 中的字符,则为 -1

 

LastIndexOf()

返回最后一个匹配项的索引,与IndexOf类似

 

 

LastIndexOfAny(char[] anyOf,int startIndex,int count)

与IndexOfAny类似

 

Insert(int startIndex,string value)

返回在此实例中的指定的索引位置插入指定的字符串的新字符串

 

IsNullOrEmty()

当前实例是否为空或Null,是则返回true

 

IsNullOrWhiteSpace()

当前实例是否为空或Null或仅由空白字符组成,是则返回true

 

Join(String,String[])、Join(String,Obejct[])、Join(String, IEnumerable<String>)、Join(string separator,string[] value,int startIndex, int count)、Join<T>(String,IEnumerable<T>)

用户String分隔符分割数组、集合

 

PadLeft(Int32)、PadLeft(Int32,Char)

左填充,直至满足长度,默认为空格填充

 

PadRight(Int32)、PadRight(Int32,Char)

右填充,直至满足长度,默认为空格填充

 

Remove(int startIndex,[int count])

返回当前字符串实例移除(从startIndex开始count长度)后得到的新字符串。count缺省则移除startIndex后所有。

 

Replace(String, String),Replace(Char,Char)

替换字符、替换字符串

 

Split(Char[],[int count],[StringSplitOptions options])

字符数组分割字符串,int count [可空]:指返回字符串数组的最大个数,StringOptions[可空]:设置是否过滤空字符串

string strA = "a,b+c-d";
Char[] splitChar= new Char{ ',' , '+' };
var arr = strA.Split(splitChar);

// arr : "a" , "b" , "c-d"

 

Split(string[] separator,int count,StringSplitOptions options)

同上

 

SubString(int startIndex,[int count])

截取字符串

 

ToLower()、ToUpper()

全部转换成小写/大写

 

Trim()

移除首尾空格

 

Tirm(char[] trimChars)

 移除首尾的匹配字符

 

TirmEnd(params char[] trimChars)

 移除尾部的匹配字符 

 

 

TirmStart(params char[] trimChars)

 移除首部的匹配字符 

 

ToCharArray()

当前字符串转换为字符数组

 

ToCharArray(Int32, Int32)

当前字符串的子字符串转换为字符数组

 

 

 

 

 

 

 

 

 

 

posted @ 2014-03-31 16:42  小米oO  阅读(441)  评论(0)    收藏  举报