c# - 使用正则表达式查找并替换字符串中的数字

标签 c# regex

我想要实现的是用从 (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/

相关文章:

c# - 无效操作异常 : This operation cannot be performed while an auto-filled column is being resized

java - 如何在java中使用正则表达式分割具有[]的复杂字符串?

Python正则表达式获取URL

c# - 将数组作为单独的值传递给参数

c# - 将视频渲染到帧速率可能不一致的文件

javascript - 正则表达式自动化,用于将 javascript 十六进制字符串替换为 HTML 实体字符串

给定 DFA 的正则表达式

javascript - 有人可以解释一下/^(\-|\+)?([0-9]+|Infinity)$/是什么吗?

c# 鼠标动态面板

c# - 根据对象枚举值将图像绑定(bind)到组合框