如何用字符串中的空格分隔数字与单词,字符和任何其他标记

0 c# string variables text replace

我试图将数字与单词或字符分开,并且任何其他标点符号用字符串中的空格将它们组合在一起,例如字符串是:

 string input = "ok, here is369 and777, and 20k0 10+1.any word.";
Run Code Online (Sandbox Code Playgroud)

和期望的输出应该是:

 ok, here is 369 and 777 , and 20 k 0 10 + 1 .any word. 
Run Code Online (Sandbox Code Playgroud)

我不确定我是否正确,但现在我正在尝试做的是找到字符串是否包含数字然后以某种方式用相同的值替换它们但是之间有空格.如果可能,我怎样才能找到所有单独的数字(不是每个数字更清楚),分隔或不用单词或空格分隔,并将每个找到的数字附加到值,可以一次性用于替换它数字相同但两侧有空格.这样它只返回字符串中第一次出现的数字:

class Program
{
    static void Main(string[] args)
    {
        string input = "here is 369 and 777 and 15 2080 and 579"; 
        string resultString = Regex.Match(input, @"\d+").Value;

        Console.WriteLine(resultString);

        Console.ReadLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

369
Run Code Online (Sandbox Code Playgroud)

但是我也不确定我是否可以为每个替换值获得所有不同的找到数字.最好找出去哪个方向

Ale*_*exD 6

如果我们需要的基本上是在数字周围添加空格,试试这个:

string tmp = Regex.Replace(input, @"(?<a>[0-9])(?<b>[^0-9\s])", @"${a} ${b}");
string res = Regex.Replace(tmp,   @"(?<a>[^0-9\s])(?<b>[0-9])", @"${a} ${b}");
Run Code Online (Sandbox Code Playgroud)

以前的答案假定单词,数字和标点符号应该分开:

string input = "here is369 and777, and 20k0";
var matches = Regex.Matches(input, @"([A-Za-z]+|[0-9]+|\p{P})");
foreach (Match match in matches)
    Console.WriteLine("{0}", match.Groups[1].Value);
Run Code Online (Sandbox Code Playgroud)

要以简短的方式构造所需的结果字符串:

string res = string.Join(" ", matches.Cast<Match>().Select(m => m.Groups[1].Value));
Run Code Online (Sandbox Code Playgroud)