用.NET輕鬆分析字串值
來源:互聯網
上載者:User
用.NET輕鬆分析字串值 處理字串值是大多數應用程式開發項目不可缺少的一部分。這常常涉及把字串分析分解為單獨的值。例如,接受來自諸如試算表等外部資料源的資料往往會用到以一些常用格式出現的值,比如用逗號分隔的值。.NET的String類會簡化提取逗號之間的各個值的過程。 提取值 String類的Split方法讓你能夠提取用特定字元分隔的各個值。分隔字元的值被傳遞給方法,後者通過其第二個變體接受用第二個參數被重載,而這個參數用來指定返回的元素的最大數量。(註:你可以指定在一個字元數組裡使用一個以上的分隔字元。)從字串提取出來的值被返回到String數組裡。 下面是兩個變數: C#語言裡的String.Split(char[]),或者VB.NET裡的String.Split(Char()) C#語言裡的String.Split(char[], int),或者VB.NET裡的String.Split(Char(), Integer) 下面的C#程式碼片段會利用使用逗號分隔的字串值來填充一個數組: string values = "TechRepublic.com, CNET.com, News.com, Builder.com, GameSpot.com"; string[] sites = values.Split(','); foreach (string s in sites) { Console.WriteLine(s); } 下面就是產生的結果: TechRepublic.com CNET.com News.com Builder.com GameSpot.com 相應的VB.NET代碼是: Dim values As String values = "TechRepublic.com, CNET.com, News.com, Builder.com, GameSpot.com" Dim sites As String() = Nothing sites = values.Split(",") Dim s As String For Each s In sites Console.WriteLine(s) Next s 你也可以指定多個分隔字元,放在一個字元數組裡。下面的代碼會用逗號、冒號或者分號來分割字串的值。此外,它用到了可選的第二個參數,把返回的值的最大數量設定為4。 char[] sep = new char[3]; sep[0] = ','; sep[1] = ':'; sep[2] = ';'; string values = "TechRepublic.com: CNET.com, News.com, Builder.com; GameSpot.com"; string[] sites = values.Split(sep, 4); foreach (string s in sites) { Console.WriteLine(s); } 下面就是產生的結果(注意,第二個參數把字串剩下的部分放在最後的數組元素裡): TechRepublic.com CNET.com News.com Builder.com; GameSpot.com 相應的VB.NET代碼是: Dim values As String values = "TechRepublic.com: CNET.com, News.com, Builder.com; GameSpot.com" Dim sites As String() = Nothing Dim sep(3) As Char sep(0) = "," sep(1) = ":" sep(2) = ";" sites = values.Split(sep, 4) Dim s As String For Each s In sites Console.WriteLine(s) Next s 儘管Split方法可以讓你很容易使用字串值裡的各個元素,但是你可能還是需要根據預先定義的格式(比如用逗號分隔的值)來格式化所有的值。String類使得合成正確格式的字串變得很容易。
合成字串 String 類的 Join 方法將用作分隔字元的字元接受為第一個參數。要被接在一起的值被當作第二個參數以字串數組的形式傳遞。它有一個重載方法簽名,能夠將整數值接受為第三個和第四個參數。第三個參數用來指定要使用的第一個數組元素,而最後一個參數是要使用的元素的總數。 下面的 C# 程式碼範例說明了合成前面樣本裡字串值的過程: string sep = ", ";
string[] values = new String[5];
values[0] = "TechRepublic.com";
values[1] = "CNET.com";
values[2] = "News.com";
values[3] = "Builder.com";
values[4] = "GameSpot.com";
string sites = String.Join(sep, values);
Console.Write(sites); 下面是產生的結果: TechRepublic.com, CNET.com, News.com, Builder.com, GameSpot.com 相應的 VB.NET 代碼是: Dim sep As String
sep = ", "
Dim values(4) As String
values(0) = "TechRepublic.com"
values(1) = "CNET.com"
values(2) = "News.com"
values(3) = "Builder.com"
values(4) = "GameSpot.com"
Dim sites As String
sites = String.Join(sep, values)
Console.Write(sites) 我們可以使用重載格式來指定從哪裡開始,以及結果中需要包含多少個元素。下面的樣本從第二個開始(要注意的是,元素的編號是從 0 開始的),並最多返回三個元素: Dim sep As String
sep = ", "
Dim values(4) As String
values(0) = "TechRepublic.com"
values(1) = "CNET.com"
values(2) = "News.com"
values(3) = "Builder.com"
values(4) = "GameSpot.com"
Dim sites As String
sites = String.Join(sep, values, 2, 3)
Console.Write(sites) 元素的起始編號以及返回的最大數量必須是在所使用的字串數組的範圍內。如果這兩者都不正確(也就是說,超出了數組的範圍),那麼就會出現異常。因此,使用 try/catch 來處理碰到的問題是個好主意。 儘管 String 類提供了必要的方法,但是它並不是用來分析字串值的唯一方式。另外一種常用的方式利用的Regex。