不确定这是否是最佳方法,但我有一些代表某些块方向的字符串。例如,“3V6V”表示一行3个垂直块,以及一行6个垂直块。 '3V6V6V'表示所有垂直的3,6,6行。 '4H4H4H4H'将是4行4个水平块。即每2个字符构成一行。每个项目将只有横向或垂直,没有混合和匹配。我需要做的是添加总数来确定块的总数。我怎样才能做到这一点?我在想做某种string.split()然后如果一个数组项是一个数字,将它添加到一个运行总计。有更好的方法吗? '4H4H4H4H'将是16而'3V6V6V'将是15.有人能指出我正确的方向吗?必须有一个相当简单的方法来做到这一点。
谢谢,
〜在圣地亚哥
答案 0 :(得分:2)
int sum = Regex.Split(input, "[HV]")
.Where(s => !string.IsNullOrEmpty(s))
.Select(s => int.Parse(s))
.Sum();
请注意,这会接受格式错误的输入,例如“3H3”或“3H6V”
编辑:事实上你可以用String.Split来简化它:
int sum = input.Split(new[] { 'H', 'V' }, StringSplitOptions.RemoveEmptyEntries)
.Sum(str => int.Parse(str));
答案 1 :(得分:0)
我将使用(未测试)的RegExp是:
((\d+)(?<type>[HV]))((\d+)\k<type>)*
通过\ k,您确保只有Hs或Vs在字符串中,但不能混合。返回值可能是一个数组,因此您可以轻松地总结数字。