gpt4 book ai didi

c# - 从字母数字中拆分数字部分

转载 作者:行者123 更新时间:2023-11-30 22:28:37 24 4
gpt4 key购买 nike

我有一个 AlphaNumeric 值,其中可能包含空格或下划线。 我想从中拆分数字并将值增加一,并且需要将数字部分连接回 Alpha 部分。

例如,字母数字可能是:1- BA 123 或 2. BA_123

我使用了正则表达式,如果字符串不包含任何空格或低于分数,它就可以工作。以下是用于拆分和递增 1 的代码:

string StrInputNumber="BA123" 
var numAlpha = new Regex("(?<Alpha>[a-zA-Z]*)(?<Numeric>[0-9]*)");
var match = numAlpha.Match(StrInputNumber);
var alpha = match.Groups["Alpha"].Value;
int num = int.Parse(match.Groups["Numeric"].Value);

这仅适用于没有任何特殊字符的字母和数字

请指导解决这个问题

最佳答案

您只需将这些字符添加到您期望的位置即可。

string[] StrInputNumber = { "BA123", "BA_123", "BA 123", "Foo 1"};
foreach (String item in StrInputNumber) {

Console.Write(item + "\t==>\t");
var numAlpha = new Regex("(?<Alpha>[a-zA-Z]*[ _]?)(?<Numeric>[0-9]*)");
var match = numAlpha.Match(item);
var alpha = match.Groups["Alpha"].Value;
int num = int.Parse(match.Groups["Numeric"].Value) + 1;

Console.WriteLine(alpha + num);
}

这将允许(可选)在字母后有一个空格或一个 _

如果你想更灵活,你可以在字母所在的类中添加字符。

var numAlpha = new Regex("(?<Alpha>[a-zA-Z _]*)(?<Numeric>[0-9]*)");

这将允许在字符串中的数字之前的任何位置使用任意数量的空格和下划线(例如“Foo _ bar ___ 123”将匹配)。

统一码

如果您想匹配所有字母而不仅仅是 ASCII 字母,请尝试 Unicode code properties

\p{L} 可以是任何语言的任何字母

\d 是数字的简写字符类

var numAlpha = new Regex("(?<Alpha>[\p{L} _]*)(?<Numeric>\d*)");

进一步阅读

一些正则表达式的基础你可以看

关于c# - 从字母数字中拆分数字部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10684116/

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