我有一个字母数字值,其中可能包含空格或下划线。
我想从中拆分数字并将值加一,并且需要将数字部分连接回 Alpha 部分。
例如,字母数字可能是:1- BA 123 或 2. BA_123
我使用正则表达式,如果字符串不包含任何空格或下划线,它就可以工作。
下面是用于分割和加一的代码:
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
“会匹配)。
Unicode
如果你想匹配所有字母而不仅仅是 ASCII 字母,请尝试Unicode 代码属性 http://www.regular-expressions.info/unicode.html#prop
\p{L}
可以是任何语言的任何字母
\d
是数字的简写字符类
var numAlpha = new Regex("(?<Alpha>[\p{L} _]*)(?<Numeric>\d*)");
进一步阅读
对于一些正则表达式基础知识,你可以看到
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)