gpt4 book ai didi

vb.net - 使用正则表达式替换将 10000 添加到数字?

转载 作者:行者123 更新时间:2023-12-01 04:37:17 27 4
gpt4 key购买 nike

我需要用相同的数字加上 10000 替换一些 2 位和 3 位数字。所以

Photo.123.aspx

需要成为
Photo.10123.aspx

并且
Photo.12.aspx

需要成为
Photo.10012.aspx

我知道在 .NET 中我可以将替换委托(delegate)给一个函数,只需将 10000 添加到数字上,但如果可以的话,我宁愿坚持使用普通的 RegEx。有任何想法吗?

最佳答案

James 是正确的,您想使用带有 MatchEvaluator 参数的 Regex.Replace 方法。匹配评估器委托(delegate)是您可以获取在匹配中获得的数字字符串并将其转换为可以添加 10,000 的数字的地方。我使用 lambda 表达式代替显式委托(delegate),因为它更紧凑和可读。

using System;
using System.Text.RegularExpressions;

namespace RenameAspxFile
{
sealed class Program
{
private static readonly Regex _aspxFileNameRegex = new Regex(@"(\S+\.)(\d+)(\.aspx)", RegexOptions.Compiled | RegexOptions.IgnorePatternWhitespace | RegexOptions.IgnoreCase);
private static readonly string[] _aspxFileNames= {"Photo.123.aspx", "Photo.456.aspx", "BigPhoto.789.aspx"};

static void Main(string[] args)
{
Program program = new Program();
program.Run();
}

void Run()
{
foreach (string aspxFileName in _aspxFileNames)
{
Console.WriteLine("Renamed '{0}' to '{1}'", aspxFileName, AddTenThousandToPhotoNumber(aspxFileName));
}
}

string AddTenThousandToPhotoNumber(string aspxFileName)
{
return _aspxFileNameRegex.Replace(aspxFileName, match => String.Format("{0}{1}{2}", match.Result("$1"), Int32.Parse(match.Result("$2")) + 10000, match.Result("$3")));
}
}
}

关于vb.net - 使用正则表达式替换将 10000 添加到数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/233908/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com