C# 如何将字符串拆分为独立变量

12

我尝试在找到逗号时将一个字符串分割成单独的字符串变量。

string[] dates = line.Split(',');
foreach (string comma in dates)
{
     string x = // String on the left of the comma
     string y = // String on the right of the comma
}

我需要能够为逗号两边的字符串创建一个字符串变量。谢谢。


你需要在 foreach 的范围之外使用这些变量吗? - Jamie Dixon
3个回答

15

在这种情况下,摆脱ForEach。

只需要:

string x = dates[0];
string y = dates[1];

1
为避免运行时错误:string y = dates.Length > 1 ? dates[1] : ""; - Shadow The Spring Wizard
@Shadow Wizard:如果line中的数据不正确,运行时错误可能比分配一些随机值要好。 - heijp06
@Peter 空字符串不是随机的常见默认值。"Index was outside the bounds of the array" 对最终用户来说意义不大。 - Shadow The Spring Wizard
@Shadow Wizard:我并不是说最终用户应该看到异常。对于一个读取来自生产系统失败的日志文件的程序员来说,“索引超出了数组界限”会有很大的意义。通过你选择的默认值,你已经隐藏了一个错误,这可能是空字符串已经存在于数据中:“2011-09-11,”或者是由内联if生成的。无论是否向用户呈现某些消息完全取决于这是否是用户界面代码。 - heijp06
1
@Peter 嗯,我在指望这里的 OP 能明智地利用这些信息...我只是提醒很多时候被忽略了,导致意外崩溃,而简单的默认值就可以解决整个问题。 - Shadow The Spring Wizard

9

只需从数组中获取字符串:

string[] dates = line.Split(',');
string x = dates[0];
string y = dates[1];

如果可能存在多个逗号,您应该明确指定您仍然只需要两个字符串:
string[] dates = line.Split(new char[]{','}, 2);

另一种选择是使用字符串操作:

int index = lines.IndexOf(',');
string x = lines.Substring(0, index);
string y = lines.Substring(index + 1);

我很惊讶没有像Python那样的方式,例如var a,b,d = line.Split(“,”) - pregmatch

4
你是指像这样吗?
   string x = dates[0];
   string y = dates[1];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接