C#:拆分字符串而不返回空字符串

我有一个字符串:

a = "1;2;3;" 

我想这样split它:

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

我怎样才能确保我只返回3而不是’空字符串’?

如果我分裂1;2;3然后我会得到我想要的。 但如果我分裂1;2;3; 然后我得到一个额外的’空字符串’。 我已经采取了建议并做到了这一点:

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

但是,我收到这些错误:

错误1’string.Split(params char [])’的最佳重载方法匹配包含一些无效参数C:\ Documents and Settings \ agordon \ My Documents \ Visual Studio 2008 \ Projects \ lomdb \ EnterData \ DataEntry \ DAL.cs 18 36 EnterData

错误2参数’2’:无法从’System.StringSplitOptions’转换为’char’C:\ Documents and Settings \ agordon \ My Documents \ Visual Studio 2008 \ Projects \ lomdb \ EnterData \ DataEntry \ DAL.cs 18 68 EnterData

String.Split在包含任何StringSplitOptions时采用数组

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

如果您不需要选项,语法会变得更容易:

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

使用StringSplitOptions

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

StringSplitOptions.RemoveEmptyEntries传递给Split方法。

编辑

Split方法没有用单个字符拆分的重载。 您需要指定一个字符数组。

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

不知道拆分选项。 如果你没有,你可以……

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

给这个镜头:

 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(';')); 

使用

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

.Split有4个重载, .Split两个不支持StringSplitOptions并使用params格式(所以你不需要创建一个splitter数组),其中两个支持StringSplitOptions并需要一个charstring数组。

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

上面的代码将根据第一个空格将该行拆分为两个子串。 substr [0]会有“你好!” substr [1]将拥有“美好的一天”。 Split中的2是一个整数计数器,您可以根据您的要求传递任何值。