仅删除逗号前后的空格

本文关键字:空格 删除 | 更新日期: 2023-09-27 18:19:58

我正在寻找一种只删除逗号前后空格的regex(?)方法。示例:

((100 0, 101 0, 101 1, 100 1, 100 0)        ,  (100.2 0.2, 100.8 0.2, 100.8 0.8, 100.2 0.8, 100.2 0.2))

预期结果:

((100 0,101 0,101 1,100 1,100 0),(100.2 0.2,100.8 0.2,100.8 0.8,100.2 0.8,100.2 0.2))

尽管进行了无数次搜索,我仍然找不到令人满意的答案。

仅删除逗号前后的空格

您可以使用以下正则表达式:

s = Regex.Replace(s, " *, *", ",");

这将搜索前面和/或后面有任意数量空格的每个逗号,并仅用逗号替换逗号和空格。

这里有一个演示:.NET Fiddle

使用Regex:

var result = Regex.Replace(
    input,
    @"'s*,'s*",
    ",");

使用string.SplitTrimJoin:

var result = string.Join(",", input.Split(',').Select(s => s.Trim()).ToArray());

先把绳子分开,把每一部分都修剪整齐,然后再连接在一起。比正则表达式快得多(在我的电脑上大约快8倍)。

一种方法是匹配@"'s*,'s*",并将其替换为",":

var s = Regex.Replace(orig, @"'s*,'s*", ",");

's代表"空白"。它将替换空格、制表符、垂直制表符等。星号限定符是贪婪的,因此表达式将尽可能多地匹配逗号前后的空格。