【问题标题】:How to get a Substring from a string in C# where the string has sequential numbers?如何从 C# 中的字符串中获取子字符串,其中字符串具有序号?
【发布时间】:2017-01-05 14:11:51
【问题描述】:

我有一个名称、值对,这两个字符串都存储在字典中。

e.g.,

Name        |   Value   |
-------------------------
Dim1L9      |   10.98   |
-------------------------
Dim14L10    |   26.32   |
-------------------------   
Dim14L11    |   95.25   |
-------------------------
Dim1L10     |   9.99    |

从这张表中我想得到 Dim1 的总和 10.98 + 9.99 = 20.97。我怎样才能做到这一点?

【问题讨论】:

  • data.Where(x => x.Key.StartsWith("Dim1L")).Sum(x => x.Value)
  • 太棒了。谢谢。
  • @haim770 - 你给了我一个全新的视角。谢谢。
  • 不客气
  • 名称由维度和车道组成。可以有 10 个维度和 15 个通道。因此文本 Dim1L9 表示维度 1 和通道 9。用户将填写一个输入参数,该参数是维度和值的总和。因此,用户只会通过 Dim1 而不是 Dim1L。上面的逻辑是行不通的。

标签: c# collections substring calculation


【解决方案1】:

以防万一你想得到所有名字的总和:

var regex = new Regex(@"^[a-zA-Z]+(\d+)L\d+$");
var sumByDimension = from kvp in dictionary
            let match = regex.Match(kvp.Key)
            where match.Success
            group kvp by match.Groups[1].Value into g
            select new
            {
                Dimension = g.Key,
                Sum = g.Sum(kvp => kvp.Value)
            };

输出:

{ Dimension: "1", Sum: 20.97 }
{ Dimension: "14", Sum: 121.57}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-25
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多