仅在逗号前后删除空格

时间:2015-10-31 18:15:36

标签: c# .net 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))

尽管进行了大量搜索,但我还是找不到满意的答案。

3 个答案:

答案 0 :(得分:7)

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

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

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

这是一个演示:.NET Fiddle

答案 1 :(得分:5)

使用Regex

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

使用string.SplitTrimJoin

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

首先拆分字符串,修剪每个部分,再次连接在一起。比正则表达式快得多(在我的电脑上快了大约8倍)。

答案 2 :(得分:3)

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

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

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