2011-09-12 151 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是一个整数计数器,您可以根据您的要求传递任何值。

相关问题