.Net Framework文本處理相關(guān)操作方法介紹
.Net Framework開發(fā)環(huán)境幫助我們提供了一個功能非常強(qiáng)大的編寫平臺。我們在這篇文章中為大家詳細(xì)介紹一下有關(guān).Net Framework文本處理的相關(guān)操作,希望大家可以具體了解其中的應(yīng)用技巧。#t#
數(shù)值和Char實例之間進(jìn)行轉(zhuǎn)換:
轉(zhuǎn)型:效率***,編譯器會直接產(chǎn)生IL指令來執(zhí)行轉(zhuǎn)換,不會有任何方法的調(diào)用;
但缺點是編譯器要將期望轉(zhuǎn)換的數(shù)值類型看作是基元類型。//c=(Char) 65;
使用Convert類型:System.Convert類型提供了靜態(tài)方法,為checked操作
//c=Convert.ToChar(65);
.Net Framework文本處理中使用Iconvertible接口:Char類型和所有.NET框架類庫FCL中的數(shù)值類型都實現(xiàn)了
Iconvertible接口,該接口定義了如ToChar這樣的方法;但效率不高,存在值類型轉(zhuǎn)化為接口裝箱問題 //c=((IConvertible)65).ToChar(null);
C#認(rèn)為String是一個基元類型,不能用new操作符來創(chuàng)建String對象。
- String s=”Hi there”;
- String file=”C:""Windows”;
- String file=@”C:"Windows”;
- //@符號告訴編譯器該字符串為一個
字面字符串,可讀性強(qiáng)
String對象最重要的特性是其恒定性。也就是說,一個字符串一旦被創(chuàng)建,就不可能再將其變長、變短、或者改變其中任何的字符。
.Net Framework文本處理中的編譯器一般將文本常量字符串放在托管模塊的元數(shù)據(jù)中,然后在運行時使用一種稱作字符串駐留string interning的機(jī)制訪問它們。
- String s=”Hello”;
- Console.WriteLine(Object.
ReferenceEquals(“Hello”,s);
//當(dāng)***個引用字符串的方法被JIT編譯時,所有嵌入在源代碼中的文本常量字符串總會被添加到CLR內(nèi)部的散列表中
運行時動態(tài)創(chuàng)建字符串:
- String s1=”Hello”;
- Sting s2=”Hel”;
- String s3=s2+”lo”;
- Console.WriteLine(Object.
ReferenceEquals(s1,s3));
//返回false,因為動態(tài)創(chuàng)建的字符串并沒有添加到CLR內(nèi)部的散列表中
如果一個應(yīng)用程序中所有的字符串比較都僅僅是比較引用而非字符集,且有一種.Net Framework文本處理方法可以將含有相同字符集的動態(tài)字符串變?yōu)橥泄芏阎械囊粋€字符串對象,則將大大提高系統(tǒng)性能。
S3=String.Intern(s3); //返回已經(jīng)存在的string對象的引用,如找不到,則該字符串將被添加到CLR內(nèi)部的散列表中
S3=String.IsInterned(s3); //找不到,返回null
只有當(dāng)我們需要在應(yīng)用程序中多次比較同一個字符串時,才運用字符串駐留技術(shù)。
字符串池技術(shù)string pooling:將多次出現(xiàn)的字符串只寫入一次到托管模塊的元數(shù)據(jù)中
由于string類型表示的是一個恒定不變的字符串,F(xiàn)CL提供了另外一種類型System.Text.StringBuilder,允許我們通過對字符串和字符執(zhí)行動態(tài)操作來創(chuàng)建String對象。
System.Object中定義了一個共有的無參ToString方法,我們可以在任何類型的實例上通過調(diào)用ToString來獲得該實例的字符串表達(dá)形式。
如果需要自己的類型為調(diào)用者提供格式和語言文化選擇的話,我們應(yīng)是其實現(xiàn)System.Iformattable接口:
- Public interface Iformattable{
- String ToString(String
format,IformatProvider
formatProvider);- }
將多個對象格式化為一個字符串:
- String s=String.Format
(“On {0:D},{1} is {2:E}
years old.”,DateTime.Now,
”Wallace”,35);- Console.WriteLine(s);
//String的靜態(tài)方法Format接受一個格式化字符串,給格式字符串使用大括號中的數(shù)字來標(biāo)識可替換的參數(shù)。
StringBuilder的AppendFormat方法是我們能夠以任何期望的方式來格式化對象
.Net Framework文本處理中的任何能夠解析一個字符串的類型都提供有一個名為Parse的共有靜態(tài)方法,該方法接受一個String,返回一個類型的實例。