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# - C#中的foreach重新计算

java - 字符串中的Java正则表达式

javascript - 为什么在使用javascript中的正则表达式模式匹配字符串的同时在输出数组中添加空字符串?

python - 在 Python 中分隔数字/字母标记

Java 7、正则表达式和补充 unicode 字符

javascript - 关于正则表达式的困惑

c# - 接口(interface)、继承、隐式运算符和类型转换,为什么会这样?

c# - 如何在asp net core中模拟 session 对象

c# - 如何编写类似于C#中的String.isNullOrEmpty的C代码

c# - LINQ.Aggregate返回错误的结果