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

时间:2011-09-12 19:47:52

标签: c# split

我有一个字符串:

a = "1;2;3;"

我想split这样:

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

如何确保仅返回123而非“空字符串”?

如果我分开1;2;3那么我会得到我想要的东西。但是,如果我拆分1;2;3;,那么我会得到一个额外的'空字符串'。我已经采取了建议并做到了这一点:

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

但是,我收到了这些错误:

  

错误1'string.Split(params。)的最佳重载方法匹配   char [])'有一些无效的参数C:\ Documents and   设置\ 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

7 个答案:

答案 0 :(得分:53)

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

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

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

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

答案 1 :(得分:18)

使用StringSplitOptions

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

答案 2 :(得分:5)

StringSplitOptions.RemoveEmptyEntries传递给Split方法。

修改

Split方法没有超载来分割单个字符。您需要指定一个字符数组。

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

答案 3 :(得分: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(';'));

答案 4 :(得分:1)

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

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

答案 5 :(得分:1)

使用

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

.Split有4个重载,其中两个不支持StringSplitOptions并使用params格式(因此您不需要创建分割符数组),其中两个支持StringSplitOptions,需要一个charstring数组。

答案 6 :(得分:1)

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

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