【问题标题】:Using regex to split string by Non Digit and Digit使用正则表达式按非数字和数字拆分字符串
【发布时间】:2015-04-09 21:18:52
【问题描述】:

我看到了一些类似的答案,但似乎都不够深入。当字母变为数字并返回时,我需要拆分字符串。诀窍是模式是可变的,这意味着可以有任意数量的字母或数字分组。

举例

AB1000 => AB 1000
ABC1500 => ABC 1500
DE160V1 => DE 160 V 1
FGG217H5IJ1 => FGG 217 H 5 IJ 1
Etc.

【问题讨论】:

  • 请向我们展示您迄今为止的最佳尝试,并告诉我们出了什么问题(例如错误、意外结果)。另外,请解释为什么需要的正则表达式。这项工作似乎很容易在一个简单的for 循环中完成(并不是说它是最好的解决方案,但它有助于理解上下文)。
  • 正则表达式的目的是我可以把它放在一个扩展方法中,以便在数据库上下文中针对 linq 查询使用。我需要能够按模型名称的前 2 段进行分组。

标签: c# .net regex string split


【解决方案1】:

如果要拆分字符串,一种方法是lookarounds:

string[] results = Regex.Split("FGG217H5IJ1", @"(?<=\d)(?=\D)|(?<=\D)(?=\d)");
Console.WriteLine(String.Join(" ", results)); //=> "FGG 217 H 5 IJ 1"

【讨论】:

  • 我不熟悉环视。感谢您的建议,效果很好!
【解决方案2】:

您可以像这样使用正则表达式:

[A-Z]+|\d+

Working demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    相关资源
    最近更新 更多