正在将由空格分隔的值组成的字符串解析为结构布局



对于我们的测试项目(Specflow/C#(,我们有一些测试需要将值的string(例如1000 500 234 390(解析为具有固定布局的结构。该string也是固定布局的。

目前的实施情况如下:

StructObject ConstructFromString(string value)
{
var values = value.split(' ').Select(v => Convert.ToUInt16(v)).ToArray();
return new StructObject{
member1 = values[0],
member2 = values[1],
member3 = values[2],
member4 = values[3]
};
}

我想知道语言是否提供了某种方式来进行这种解析?或者目前的实施方式是可能的最佳方式?

少数备注:

转换可能会抛出异常,所以如果您不希望这样,可以使用UInt16.TryParse方法:

var values = value.split(' ').Select(v => UInt16.TryParse(v, out short res) ? res : 0).ToArray();

注意,0将是"错误"值。

您可以通过定义一个接受四个参数或int数组作为参数的构造函数来稍微改进代码,然后将其调用为:

return new StructObject(values[0], values[1], values[2], values[3]);

return new StructObject(values);

在构造函数中,您将赋值。

您可以在名为">ConvertFromString"的StructObject中实现静态方法,并将所有转换逻辑放入其中。在这种情况下,您的代码将看起来像:

StructObject structObject = StructObject.ConvertFromString(str);

或者另一种变体,您可以使用扩展方法。在这种情况下,您的代码将看起来像:

StructObject structObject = str.ConvertToStructObject();

最新更新