如何找到字符串前面的直接整数值?

14 浏览
0 Comments

如何找到字符串前面的直接整数值?

在C#中如何找到字符串前面的立即整数值?例如:\n订购了50+个箱子,但只交付了2个。\n我需要知道在“交付”之前写的箱子数量(整数值)。输出应该是2。我已经用正则表达式在C#中编写了代码:\n

string line = "订购了50+个箱子,但只交付了2个。";
string boxesDelivered = Regex.Match(line, @"\d+").Value;
//我得到的输出是50而不是2。

0
0 Comments

问题的出现原因是用户需要找到在字符串中出现在"delivered"之前的最后一个整数值。

解决方法是使用正则表达式来匹配满足条件的字符串。具体的正则表达式是(\d+)[^\d]*(?:delivered),它的意思是"匹配在另一个数字序列之前出现且在delivered之前出现的任意数字序列"。

下面是一个使用这个正则表达式的示例代码:

string line = "50+ boxes were ordered, however only 2 are delivered.";
string boxesDelivered = Regex.Match(line, @"(\d+)[^\d]*(?:delivered)").Groups[1].Value;
// boxesDelivered = 2

0
0 Comments

从上述内容可以看出,问题是如何找到在一个字符串之前紧跟着的整数值。这个问题的解决方法是使用正则表达式来匹配模式,并使用特定的代码进行处理。

正则表达式模式是:\b\d+\b(?=[^\d]*\bdelivered\b)。这个模式使用了\b来匹配整个单词,\d+来匹配一个或多个数字,[^\d]*来匹配任意非数字字符,并使用(?=...)来进行前瞻匹配,以确保在"delivered"之前。

解决方法的示例代码是:

string line = "50+ boxes were ordered, however only 2 are delivered.";
var match = Regex.Match(line, @"\b\d+\b(?=[^\d]*\bdelivered\b)");
if (match.Success)
{
    string boxesDelivered = match.Value;
    // TODO: convert the value to a numeric type or use it as is.
}

这个代码示例首先定义了一个字符串line,然后使用Regex.Match方法来进行匹配。如果匹配成功,则将匹配到的值赋给boxesDelivered变量,并可以将其转换为数值类型或直接使用。

最后,问题的提出者表示这个解决方法对其有效,并感谢这个解决方法。

0