c#中Split分割字符串及常見問題

在C#中Split函數是用來分割字符串的,這個與php中split函數幾乎是相同的,但我在使用Split分割字符串會發現一些問題,下面我一起來給大家總結一下。

例1

代碼如下
string s="abcdeabcdeabcde";
string[] sArray=s.Split('c');
foreach(string i in sArray)
Console.WriteLine(i.ToString());

輸出下面的結果:ab
deab
deab
de



我們看到了結果是以一個指定的字符進行的分割。如果我們希望使用多個字符進行分割如c,d,e如何做呢?好,我們使用另一種構造方法:

更改爲

代碼如下
string s="abcdeabcdeabcde
string[] sArray1=s.Split(new char[3]{'c','d','e'});
foreach(string i in sArray1)
Console.WriteLine(i.ToString());

可以輸出下面的結果:ab
ab
ab


除了以上的這兩種方法以外,第三種方法是使用正則表達式。新建一個控制台專案。然後先添加 using System.Text.RegularExpressions;
Main() :中更改爲

代碼如下


System.Text.RegularExpressions
string content="agcsmallmacsmallgggsmallytx";
string[]resultString=Regex.Split(content,"small",
RegexOptions.IgnoreCase) foreach(string i in resultString) Console.WriteLine(i.ToString());

輸出下面的結果:agc mac ggg ytx

使用正則表達式有什麽好處呢? 別著急,後面我們會看到它的獨特之處。下面介紹第4種方法。比如
string str1="我*****是*****一*****個*****教*****師";
如果我希望顯示爲:我是一個教師, ,如何作呢? 我們可以使用下面代碼:

代碼如下

string str1="我*****是*****一*****個*****教*****師;
string[] str2;
str1=str1.Replace("*****","*");
str2=str1.Split('*');
foreach(string i in str2)
Console.WriteLine(i.ToString());


這樣也可以得到正確結果。但是比如
string str1="我**是*****一*****個*****教*****師";

我希望顯示的結果爲:我是一個教師。
我如果采用上面的第四種方法來做就會産生下面的錯誤:我 是一個教師
中間有空格輸出,所以輸出結果並不是我希望的結果,如何解決呢?這就又回到了正則表達式了(這裏可以看到它的功能強大之處),這時可以采用下面的第五種方法:

代碼如下

string str1="我**是*****一*****個*****教*****師";
string[] str2 = System.Text.RegularExpressions.Regex.Split(str1,@"[*]+");
foreach(string i in str2)
Console.WriteLine(i.ToString());


這裏通過"[*]+" 巧妙的完成了我們的目標。

使用split過程中碰到的問題


#中Split分隔字符串時,如果分隔符爲一個字符,一般情況下返回的字符數組長度是預期的。
但當分隔符爲多個字符時,比如 str.Split("|||".ToCharArray()) ,返回的字符數組中可能會多出預期的長度,數組中會出現一些值爲空的字符串元素。
這時我們可以采用正則表達式來分割,你可能需要對正則表達式比較熟悉,不過一般需要用到的正則表達式都比較簡單:

代碼如下
string[] arr = Regex.Split( str, @"|||" ,RegexOptions.IgnoreCase );

注意:| 在正則表達式中是保留字符,需要用""轉義。
分割文本域中以回車換行的例子:

代碼如下
string[] arr = Regex.Split( str , "rn" )
更多相關文章
  • 現在浏覽器越來越多了,兼容性也特別複雜,下面我收藏了css與javascript中浏覽器兼容常見問題總結,有需要的朋友可參考一下.突然間,在Chrome下看起來很整齊的布局,在IE下變成一團糟.爲了找出原因,我改動了div的background-color屬性.最後,發現同一個DIV的寬度在IE和C ...
  • PHP中連接SQLServer2005代碼與常見問題
    本文章介紹了 PHP中連接SQLServer2005代碼與常見問題,大家可參考.連接前配置
  • 文章簡單的介紹了關于Python中Excel各種操作與常見問題,有需要的朋友可以參考一下.模塊介紹:xlrd 0.7.5 下載地址:http://pypi.python.org/pypi/xlrd 文檔地址:https://secure.simplistix.co.uk/svn/xlrd/trunk
  • asp教程.net c# 常見問題 路徑,文件,目錄,io彙總 主要內容:一.路徑的相關操作,如判定路徑是否合法,路徑類型,路徑的特定部分,合並路徑,系統文件夾路徑等內容:二.相關通用文件對話框,這些對話框可以幫助我
  • iphone手機升級iOS 9後遇到的常見問題介紹
    iphone手機升級iOS 9後遇到的常見問題估計有很多了,今天我們一起來看小編整理的一篇
  • Yoga平板電腦是聯想推薦的一款娛樂平板電腦了,此款平板使用的操作系統:Android4.2了,下面本文章整理了對于剛入手Yoga平板的一些常見問題與解決方案.Yoga平板是否可以與投影儀連接因爲Yoga平板B600
  • 騰達(Tenda)路由器P1000常見問題解答整理了大量在使用p1000路由器時碰到的問題與解決方法,希望例子能給各位朋友帶來一些幫助哦.本文檔提供一些常見問題及解決方法,閱讀它能幫助您解決一些遇到的難題.如果您不能
  • ajaxValidator 常見問題解決(傳參,中文亂碼)以下是作者對ajaxValidator的聲明:ajaxvalidator是大家問的最多的問題,修正一個bug(感謝網友“じ??w√”),並把大家最關心的問題,再做一次闡述.bug現象:無論校驗有沒有校驗通過,當控件再次得到焦點而再次失去焦點的 ...
一周排行