我想要实现的是用从 (match * int)
计算的新值替换字符串中的数字。
所以字符串输入看起来像:
500g Flour
14g Salt
7g Dry yeast
45ml Olive oil
309ml Water
结果应该是这样的:
1000g Flour
28g Salt
14g Dry yeast
90ml Olive oil
618 ml Water
row["ingredients"]
是一个 DataRow
。
这是我所在的地方:
System.Text.RegularExpressions.
Regex.Replace(row["ingredients"].ToString(),
@"[^/d]", Delegate(Match match) { return match * 2; },
RegexOptions.Multiline);
非常感谢任何解决方案。
最佳答案
第一个问题是你的正则表达式只匹配不是数字的字符。
更正:它使用正斜杠而不是反斜杠,所以它匹配任何不是斜杠或 d 的东西
将正则表达式更改为 @"\b(\d+)"
这是关于 dotnetfiddle.net 的一个工作示例
using System;
using System.Text.RegularExpressions;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var string1 = "500g Flour 14g Salt 7g Dry yeast 45ml Olive oil 309ml Water";
var result = Regex.Replace(string1, @"\b(\d+)", Doubler, RegexOptions.Multiline);
Console.WriteLine(result);
Console.ReadKey();
}
private static string Doubler(Match match)
{
return (Convert.ToInt32(match.Value)*2).ToString();
}
}
}
关于c# - 使用正则表达式查找并替换字符串中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12432237/