如何添加空格以分隔带有标点符号的合并单词(如果它介于两者之间)并保留空格

how to add whitespace to separate merged words with punctuation mark if it is between and keep it with whitespace

如果我的输入字符串如下所示,我需要添加白色 space:

“你好,世界”

将其传递到文本文档中,如下所示:

"hello, world"带白色-space并保留标点符号在原处。

换句话说,如果下一个单词与前一个单词的标点符号合并,我需要在标点符号后添加一个白色-space。我需要所有的逗号、点、感叹号和破折号。

所以我不确定我是否可以使用这个:

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"

使用 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?