字符串宏替换

发布于 2024-12-10 02:13:34 字数 471 浏览 0 评论 0原文

我有一个 Visual Studio 2008 C# .NET 3.5 应用程序,我需要在其中解析宏。

给定一个 N 位长的序列号和一个类似 %SERIALNUMBER3% 的宏,我希望此解析方法仅返回序列号的前 3 位数字。

string serialnumber = "123456789";
string macro = "%SERIALNUMBER3%";
string parsed = SomeParseMethod(serialnumber, macro);

parsed = "123"

给定 `%SERIALNUMBER7%,返回前 7 位数字等。

我可以使用 String.IndexOf 和一些复杂的方法来完成此操作,但我想知道是否有一个简单的方法。也许使用 Regex 替换。

做到这一点最简单的方法是什么?

I have a Visual Studio 2008 C# .NET 3.5 application where I need to parse a macro.

Given a serial serial number that is N digits long, and a macro like %SERIALNUMBER3%, I would like this parse method to return only the first 3 digits of the serial number.

string serialnumber = "123456789";
string macro = "%SERIALNUMBER3%";
string parsed = SomeParseMethod(serialnumber, macro);

parsed = "123"

Given `%SERIALNUMBER7%, return the first 7 digits, etc..

I can do this using String.IndexOf and some complexity, but I wondered if there was a simple method. Maybe using a Regex replace.

What's the simplest method of doing this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

喵星人汪星人 2024-12-17 02:13:34
var str = "%SERIALNUMBER3%";
var reg = new Regex(@"%(\w+)(\d+)%");
var match = reg.Match( str );
if( match.Success )
{
    string token = match.Groups[1].Value;
    int numDigits = int.Parse( match.Groups[2].Value );
}
var str = "%SERIALNUMBER3%";
var reg = new Regex(@"%(\w+)(\d+)%");
var match = reg.Match( str );
if( match.Success )
{
    string token = match.Groups[1].Value;
    int numDigits = int.Parse( match.Groups[2].Value );
}
も星光 2024-12-17 02:13:34

使用 Regex 类。您的表达式将类似于:

@"%(\w)+(\d)%"

您的第一个捕获组是 ID(在本例中为“SERIALNUMBER”),第二个捕获组是位数(在本例中为“3”)。

Use the Regex class. Your expression will be something like:

@"%(\w)+(\d)%"

Your first capture group is the ID (in this case, "SERIALNUMBER"), and your second capture group is the number of digits (in this case, "3").

人生百味 2024-12-17 02:13:34

非常快速和肮脏的例子:

static void Main(string[] args)
        {
            string serialnumber = "123456789";
            string macro = "%SERIALNUMBER3%";

            var match = Regex.Match(macro, @"\d+");

            string parsed = serialnumber.Substring(0, int.Parse(match.ToString()));
        }

Very quick and dirty example:

static void Main(string[] args)
        {
            string serialnumber = "123456789";
            string macro = "%SERIALNUMBER3%";

            var match = Regex.Match(macro, @"\d+");

            string parsed = serialnumber.Substring(0, int.Parse(match.ToString()));
        }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文