将数字部分从字母数字中分离出来

2024-01-25

我有一个字母数字值,其中可能包含空格或下划线。 我想从中拆分数字并将值加一,并且需要将数字部分连接回 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*)");

进一步阅读

对于一些正则表达式基础知识,你可以看到

  • 我的博文每个程序员都应该了解的关于正则表达式的知识 http://blog.xisb.de/?p=4

  • 教程关于正则表达式.info http://www.regular-expressions.info/tutorial.html(关于正则表达式的非常好的资源)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将数字部分从字母数字中分离出来 的相关文章

随机推荐

  • 匹配最长重复序列的正则表达式

    我想匹配至少重复一次的最长序列 Having T send ack new amend pending cancel replace replaced cancel pending cancel replace replaced 结果应该是
  • Sql Server 更改数据捕获:添加列时保留历史记录?

    将新列添加到配置为更改数据捕获 cdc 的表时 捕获实例表不会有新列 直到为源表禁用并重新启用 cdc 在此过程中 现有的捕获实例将被删除 我想我可以将现有数据复制到临时表中 然后使用以下 SQL 复制回来 但是 其他 CDC 元信息 例如
  • 添加 GROUP BY 子句产生的列

    我遇到了这样的情况 使用 GROUP BY 后需要从两行添加列 我的查询如下 select AcctId DC sum TrnAmt from TableId group by AcctId DC order by AcctId DC Re
  • Android动画暂停和播放问题

    我使用以下代码创建了一个动画 private AnimationSet rootSet new AnimationSet true private int xstart 258 private int ystart 146 for k
  • 按名称获取班级

    我可以通过名称获取一个类吗 例如 class Foo class Bar let x Foo classByString x need to return Foo 我想使用元编程来减少代码维护 您可以使用NSClassFromString
  • WPF 控件中的本机 Win32 窗口

    我正在开发一个需要主机本机 Win32 窗口的应用程序 但不知何故我不知道如何做到这一点 我需要创建一个可以在其上显示本机 Win32 控件的 WPF 对话框窗口 该对话框窗口上也将具有 WPF 控件 因此我正在寻找某种可以获取 HWND
  • 使用 Vaadin 登录的 Spring Boot 安全性

    我尝试构建一个基于 Spring Boot 1 2 7 RELEASE 和 Vaadin 7 6 3 的应用程序 我的问题是我无法将 Spring Security 与 Vaadin 集成 我想要一个自定义 Vaadin 构建的 Login
  • ASP.NET Web App 使用错误的 (2.0) CLR 版本(而不是 4.0)

    我刚刚将我一直在开发的 ASP NET Web 应用程序部署到新的开发机器上 这是一个从3 5转换而来的4 0项目 由于某种原因 当我尝试通过默认网站下的 IIS 网站访问该网站时 出现以下错误 无法识别的属性 targetFramewor
  • Python requests & urllib3 Retry - 如何从内部重试循环内部模拟 ConnectionError?

    给出以下示例用法 adapter HTTPAdapter max retries Retry total 5 backoff factor 0 1 status forcelist 429 500 502 503 504 method wh
  • 为什么这个 jQuery .change 事件在 .click 事件之后停止工作

    我有一个脚本 它显示数组中的问题 并使用以下命令从一个问题切换到下一个问题 click两个按钮上的事件 上一个和下一个 当我加载页面时 radio change选择器工作正常 但是当我单击上一个或下一个时 它停止工作 我尝试改变 previ
  • 正则表达式匹配双引号内的每个字符串并包含转义引号

    已经有很多类似的问题了 但没有一个适合我的情况 我有一个字符串 其中包含双引号内的多个子字符串 并且这些子字符串可以包含转义的双引号 例如对于字符串 然后 这是一些带有引号和 转义引号 的示例文本 并不是说我们需要更多 而是 这是 另一个
  • 如何让 Push() 键生成我的 Firebase?

    正如你从照片中看到的 我有一个孩子FreezerItems 在该子项下我还有另外两个子项 它们是 Firebase 使用创建的随机键push 我的问题是 我具体如何获得密钥L8i2M4wNUF5wOojaFE 另外我如何将该密钥放入我的Re
  • 如何在 f# 中执行多行 lambda 表达式?

    我该如何在 F 中执行此操作 C public class MyClass void Render TextWriter textWriter Tag gt textWriter WriteLine line 1 textWriter Wr
  • 无法使用 Visual Studio 2013 运行 Cordova 应用程序

    我已成功安装 多设备混合应用程序 所需的所有第三方设置 但是当我使用 Visual Studio 2013 运行我的应用程序时 出现以下两个错误 Error 1 cmd Command failed with exit code 255 E
  • 基于公共id连接两个js对象数组的函数式方法

    我正在尝试实现类似于 SQL 表连接的功能 以最优雅 功能 的方式 最好使用 underscore js 所以请不要使用 for 循环 我需要合并两个不同数组中的对象 并与一个公共标识符进行匹配 例如 给定 var basic id 1 n
  • php - 按自定义标准对数组进行排序

    我有一个对象数组 object1 gt name Name1 key key1 object2 gt name Name2 key key2 object3 gt name Name3 key key3 和一组优先级键 keys key3
  • 如何将由空格参数分隔的字符串传递给 Jenkins 构建触发器?

    到目前为止 这有效 http JENKINS SERVER job YOUR JOB NAME buildWithParameters myparam Hello 但当value of myparam包含空格 例如Hello word它不起
  • CSS height 属性的“auto”值到底意味着什么?

    w3schools 说height auto 浏览器计算高度 这是默认值 但是 浏览器计算高度 是什么意思呢 这是否意味着它只是简单地总结了所包含元素的高度 对于所有浏览器来说 这总是用相同的方法计算吗 这是什么意思浏览器计算高度 这意味着
  • 一起使用 Guice 和 JMock 的最佳方式是什么?

    我已经开始使用 Guice 对项目进行一些依赖注入 主要是因为我需要在远离单元测试的一层注入模拟 当前使用 JMock 这使得手动注入非常尴尬 我的问题是引入模拟的最佳方法是什么 我目前所拥有的是在单元测试中创建一个满足依赖关系的新模块 并
  • 将数字部分从字母数字中分离出来

    我有一个字母数字值 其中可能包含空格或下划线 我想从中拆分数字并将值加一 并且需要将数字部分连接回 Alpha 部分 例如 字母数字可能是 1 BA 123 或 2 BA 123 我使用正则表达式 如果字符串不包含任何空格或下划线 它就可以