C# 我如何在c中进行sscanf#

C# 我如何在c中进行sscanf#,c#,c,C#,C,我如何在C#中实现这一点 最少的代码和依赖性是最好的,是否有一些内置的正则表达式 我使用的是c#4.0如果像scannf一样,您愿意假设用户会提供完全正确的数据,那么您可以执行以下操作 string astring = ...; string[] values = astring.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries); int a = Int32.Parse(values[0]); int b = Int32

我如何在C#中实现这一点

最少的代码和依赖性是最好的,是否有一些内置的正则表达式


我使用的是c#4.0

如果像scannf一样,您愿意假设用户会提供完全正确的数据,那么您可以执行以下操作

string astring = ...;
string[] values = astring.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries);
int a = Int32.Parse(values[0]);
int b = Int32.Parse(values[1]);
int c = Int32.Parse(values[2]);

正则表达式适用于这种情况,但它们有点过头了。可以使用前面提到的Split方法轻松地标记字符串

我能想到的最简单的办法是:

var fields = astring.Split(null, StringSplitOptions.RemoveEmptyEntries);
a = int.Parse(fields[0]);
b = int.Parse(fields[1]);
c = int.Parse(fields[2]);

或者,用C#编写自己版本的
sscanf()
,这相当简单。该语法使其易于实现


我实现了我自己的版本并发布在web上。您可以查看它。

我假设StringSplitOptions.RemoveEmptyEntries选项将有效地允许任意数量的空格分隔条目?现在,如果我们可以执行
a,b,c=astring.Split(“”,…).Select(Int32.Parse)中的code>sscanf等价项使用Regex.Match()。更好地控制字段解析,并大大减少困扰scanf()的奇怪行为。
var fields = astring.Split(null, StringSplitOptions.RemoveEmptyEntries);
a = int.Parse(fields[0]);
b = int.Parse(fields[1]);
c = int.Parse(fields[2]);