Hel*_*ein 12 c# string perl split
我有一个字符串,其中有几个字段由特定字符分隔,如下所示:
A,B,C
我想在逗号中拆分字符串,并将每个结果字段分配给它自己的字符串变量.在Perl中我可以像这样优雅地做到这一点:
my ($varA, $varB, $varC) = split (/,/, $string);
Run Code Online (Sandbox Code Playgroud)
在C#中实现相同结果的最简单,最优雅的方法是什么?
我知道我可以分成一个数组:
string[] results = string.Split(',');
Run Code Online (Sandbox Code Playgroud)
但是我必须通过他们的索引访问字段,例如结果[2].这很难阅读并且容易出错 - 考虑没有3个30个字段.出于这个原因,我更喜欢将每个字段值放在自己的命名变量中.
我同意.隐藏在Adapter类中的拆分似乎是一个很好的方法,并且很好地传达了您的意图:
public class MySplitter
{
public MySplitter(string split)
{
var results = string.Split(',');
NamedPartA = results[0];
NamedpartB = results[1];
}
public string NamedPartA { get; private set; }
public string NamedPartB { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
您可以使用元组(在.Net 4中添加).MSDN中的元组
这个:
public class MySplitter
{
public MySplitter(string split)
{
var results = split.Split(',');
NamedPartA = results[0];
NamedpartB = results[1];
}
public string NamedPartA { get; private set; }
public string NamedPartB { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
可以用这样的东西来实现:
public Tuple<string,string> SplitIntoVars(string toSplit)
{
string[] split = toSplit.Split(',');
return Tuple.Create(split[0],split[1]);
}
Run Code Online (Sandbox Code Playgroud)
使用元组你可以使用:
var x = SplitIntoVars(arr);
// you can access the items like this: x.Item1 or x.Item2 (and x.Item3 etc.)
Run Code Online (Sandbox Code Playgroud)
您还可以创建一个使用Tuple<string,int>等元组.
另外......我真的不喜欢参数,所以你模拟使用元组返回多个值(显然,也是不同类型).这个:
public void SplitIntoVariables(string input, out a, out b, out c)
{
string pieces[] = input.Split(',');
a = pieces[0];
b = pieces[1];
c = pieces[2];
}
Run Code Online (Sandbox Code Playgroud)
变成这样:
public Tuple<string,string,string> SplitIntoVariables(string[] input)
{
string pieces[] = input.Split(',');
return Tuple.Create(pieces[0],pieces[1],pieces[2]);
}
Run Code Online (Sandbox Code Playgroud)
其他(更具想象力)选项可能是创建一个包含值的ExpandoObject(动态)(类似于ASP.NET MVC中的ViewBag)