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
并需要一个char
或string
数组。
string line="Hello! Have nice day." string[] substr = line.Split(new[] {' '}, 2);
上面的代码将根据第一个空格将该行拆分为两个子串。 substr [0]会有“你好!” substr [1]将拥有“美好的一天”。 Split中的2是一个整数计数器,您可以根据您的要求传递任何值。