我有一个字符串:
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 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
答案 0 :(得分:53)
String.Split在包含任何StringSplitOptions
时采用数组:
string[] batchstring = batch_idTextBox.Text.Split(new [] { ';' }, StringSplitOptions.RemoveEmptyEntries);
如果您不需要选项,语法会变得更容易:
string[] batchstring = batch_idTextBox.Text.Split(';');
答案 1 :(得分:18)
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
,需要一个char
或string
数组。
答案 6 :(得分:1)
string line="Hello! Have nice day."
string[] substr = line.Split(new[] {' '}, 2);
上面的代码会根据第一个空格将该行分成两个子串。 substr [0]将拥有" Hello!" substr [1]将拥有"祝你有美好的一天。"。 Split中的2是一个整数计数器,您可以根据您的要求传递任何值。