C# 将()语句拆分为单词,同时保留空格

C# 将()语句拆分为单词,同时保留空格,c#,regex,split,C#,Regex,Split,我正在使用Regex.Split()获取用户输入并将其转换为列表中的单个单词,但现在它删除了它们添加的任何空格,我希望它保留空白 string[] newInput = Regex.Split(updatedLine, @"\s+"); 我猜你感兴趣的一些“单词”实际上是可以接受空格的短语。您不能轻松地将空格字符同时用作短语分隔符和短语本身中允许的字符。请尝试使用逗号作为分隔符: string updatedLine = "user,input,two words,even three wor

我正在使用
Regex.Split()
获取用户输入并将其转换为列表中的单个单词,但现在它删除了它们添加的任何空格,我希望它保留空白

string[] newInput = Regex.Split(updatedLine, @"\s+");

我猜你感兴趣的一些“单词”实际上是可以接受空格的短语。您不能轻松地将空格字符同时用作短语分隔符和短语本身中允许的字符。请尝试使用逗号作为分隔符:

string updatedLine = "user,input,two words,even three words";
string[] newInput = Regex.Split(updatedLine, @",");
此版本的正则表达式允许在逗号后使用尾随空格:

string updatedLine = "user, input,   two words,    even three words";
string[] newInput = Regex.Split(updatedLine, @",\s+|,");
表示从前面有空格的点分割。但是如果单独使用,它将在示例文本上创建15个拆分,因为在重复空格的情况下,每个空格后面都有另一个空格

(?=(?<=[^\s])\s+)

(?=(?如何/在何处保留空格?例如,字符串
“foo bar”
应该拆分为什么?goooooooooooooooood!+1
(?=\s+)
(?=(?<=[^\s])\s+)
(?=(?<=^|[^\s])\s+)