如何添加空格以使用标点符号分隔合并的单词(如果它位于中间并用空格保留)

时间:2016-10-23 12:50:43

标签: c# regex string text punctuation

如果输入字符串,我需要添加空白区域,如下所示:

"你好,世界"

将它传递给文本文档,如下所示:

"你好,世界" 带有空格并在地方留下标点符号。

换句话说,如果下一个单词与前一个单词标点符号合并,我需要在标点符号后添加一个空格。我需要它,包括所有,逗号,点,感叹号和短划线。

所以我不确定,如果我可以使用它:

string input = "hello,world,world,world";

string pattern = @",(\S)";
string substitution = @",  ";

Regex regex = new Regex(pattern);
string result = regex.Replace(input, substitution);

但结果它在标点符号后剪切了单词的第一个字符:

hello,  orld,  orld,  orld

并且期望的结果应该是:

"hello, world, world, world"

1 个答案:

答案 0 :(得分:0)

使用获得Regex.Replace委托的MatchEvaluator重载:

string input = "hello!world.world-world";
var result = Regex.Replace(input, @"[\,\.\-\!]", (m) => m + " ");

// hello! world. world- world

有关MatchEvaluator的详情,请参阅:How does MatchEvaluator in Regex.Replace work?