gpt4 book ai didi

c# - 正则表达式搜索单个 0 并添加逗号

转载 作者:太空狗 更新时间:2023-10-30 01:15:14 26 4
gpt4 key购买 nike

我有以下所有数字数据:

4245 4 0 0242 4424.09 0 422404 5955 0
2234234.234 224 0
2423 234 0

我需要单独处理每一行。我需要删除所有单个 0 并使用逗号输出如下:

4245,4, 0242,4424.09, 422404,5955
2234234.234,224
2423,234

我得到了删除个位数的部分:

var result = Regex.Replace(inData, @"\b\s0\b", string.Empty);

但不知道如何在每个数字之间添加逗号。任何帮助,将不胜感激。谢谢。

最佳答案

您可以通过一个 Regex.Replace 操作实现您想要的效果,但使用自定义匹配评估器:

var input = "4245 4 0 242 4424.09 0 422404 5955 0";
var results = Regex.Replace(input, @"(?:\s+|^)0(\s+)|(\s+0)$|\s+", m =>
m.Groups[1].Success ? ", " :
m.Groups[2].Success ? "" : ",");

enter image description here

重点是匹配我们需要的那些部分并捕获到组中,以便可以进一步分析它们并采取适当的行动。

图案细节:

  • (?:\s+|^)0(\s+) - 匹配 0 ,它要么在开头,要么在它之前有空格,然后是 1或多个空格(0 之后的空格存储在第 1 组中)
  • | - 或者
  • (\s+0)$ - 第 2 组捕获一个或多个空格,然后是 ($) 末尾的 0字符串
  • | - 或者
  • \s+ -(第三个选项)在所有其他上下文中有 1 个或多个空格。

为了以防万一有人喜欢更具可读性的版本,这里有一个替代方案,其中最后的 0 用字符串方法删除,然后使用 1 个正则表达式用逗号替换数字内的所有空格, 但在我们用 String.Replace 替换所有 0 之前。

var inp = "4245 4 0 0242 4424.09 0 422404 5955 0";
inp = inp.EndsWith(" 0") ? inp.Substring(0, inp.Length - 2) : inp;
var output = Regex.Replace(inp.Replace(" 0 ", ", "), @"(\d) (\d)", "$1,$2");

关于c# - 正则表达式搜索单个 0 并添加逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39273706/

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