【问题标题】:Whats the best way of extracting a specific number in a string?提取字符串中特定数字的最佳方法是什么?
【发布时间】:2021-11-16 07:22:45
【问题描述】:

当以如下格式给出字符串时:

Randy Test 10000 1 aValue 3.5mL bValue 4.0mL

解析并获取3.54.0 并将它们设置为整数的最佳方法是什么?

我想到的一种方法是基于“。”进行拆分。因为这两个值总是有一个小数并取每个数组的第一个和最后一个值。我也知道正则表达式可能会在这个领域有所帮助,但我对正则表达式没有任何经验。

【问题讨论】:

  • 首先,3.5 和 4.0 不是整数,所以不要试图将它们设置为一个。其次,如果你对 Regex 没有任何经验,你应该去找一个教程并尝试一些代码。我们不是来为您制作正则表达式或教您如何使用它们。
  • 整数? 3.5?你不是说双打吗?
  • 字符串字面上总是这样,数据是这样的吗?如果是这样,您可以在空格上分开并假装您有一个标记器并取第 6 和第 8 件事。虽然这很冒险,并且假设您始终拥有这些数据,但根据数据的来源,这可能是有效的。然后,第 6 和第 8 件事只需要在周期上拆分以获得领先的数字。假设他们总是有一个并且您不需要四舍五入。
  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。

标签: c# arrays parsing split


【解决方案1】:
var exp = new RegEx("([0-9.]{1,5})mL");
var input = "Randy Test 10000 1 aValue 3.5mL bValue 4.0mL";

var results = (exp.Matches(input) as IEnumerable<Match>).
                  Select(m => Double.Parse(m.Groups[1].Value));

或者,如果您想更具体:

var exp = new RegEx("[ab]Value ([0-9.]{1,5})mL");
var input = "Randy Test 10000 1 aValue 3.5mL bValue 4.0mL";

var results = (exp.Matches(input) as IEnumerable<Match>).
                  Select(m => Double.Parse(m.Groups[1].Value));

【讨论】:

    猜你喜欢
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 2010-09-09
    • 1970-01-01
    相关资源
    最近更新 更多