2011-09-12 150 views
23

我有一個字符串:C#:拆分字符串,而不是返回空字符串

a = "1;2;3;" 

而且我想這樣split它:

foreach (string b in a.split(';')) 

我怎樣才能確保我返回只有1,2,3而不是'空字符串'?

如果我拆分1;2;3那麼我會得到我想要的。但如果我拆分1;2;3;,那麼我會得到一個額外的'空字符串'。我已經採取建議和做到了這一點:

string[] batchstring = batch_idTextBox.Text.Split(';', StringSplitOptions.RemoveEmptyEntries); 

不過,我收到這些錯誤:

錯誤1爲最佳重載方法匹配 'string.Split(PARAMS 的char [])' 有一些無效參數C:\ Documents和 設置\ agordon \我的文檔\ Visual Studio的 2008 \項目\ lomdb \ EnterData \的DataEntry \ DAL.cs 18 36 EnterData

錯誤2參數 '2':不能從轉換' System.StringSplitOptions' 到 '字符' C:\ Documents和Settings \ agordon \我的文檔\ Visual Studio的 2008 \項目\ lomdb \ EnterData \的DataEntry \ DAL.cs 18 68 EnterData

回答

43

字符串。包括當分割需要一個陣列任何StringSplitOptions

string[] batchstring = batch_idTextBox.Text.Split(new [] { ';' }, StringSplitOptions.RemoveEmptyEntries); 

如果您不需要的選項,語法變得更加容易:

string[] batchstring = batch_idTextBox.Text.Split(';'); 
5

通行證StringSplitOptions.RemoveEmptyEntries的拆分方法。

EDIT

分割方法不具有過載由單個字符來分割。您需要指定一個字符數組。

foo.Split(new char[] {';'}, StringSplitOptions.RemoveEmptyEntries); 
1

給這一個鏡頭:

string test = "1;2;3;"; 
test = String.Join(",", test.TrimEnd((char)59).Split((char)59)); 

string test = "1;2;3;"; 
test = String.Join(",", test.TrimEnd(';').Split(';')); 
1

不知道拆選項。如果你沒有,你可以...

a.Split(';').Where(s => s.Length > 0).ToArray(); 
1

使用

a.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); 

有4個過載.Split,他們兩個都不支持StringSplitOptions和使用params格式(所以你不需要創建一個分離器陣列),其中兩個支持StringSplitOptions並需要一個charstring的數組。

1
string line="Hello! Have nice day." 
string[] substr = line.Split(new[] {' '}, 2); 

上面的代碼行拆分成兩個子基於第一空間。 substr [0]將會有「你好!」 substr [1]將有「祝你有美好的一天」。在Split中的2是一個整數計數器,您可以根據您的要求傳遞任何值。

相關問題