我正在使用
Regex.Split()
将用户输入转换为列表中的单独单词,但是目前它会删除任何添加的空格,我希望它可以保留空格。string[] newInput = Regex.Split(updatedLine, @"\s+");
string text = "This is some text";
var splits = Regex.Split(text, @"(?=(?<=[^\s])\s+)");
foreach (string item in splits)
Console.Write(item);
Console.WriteLine(splits.Count());
(?=\s+)
该方法是从具有前导空格的点开始分割。但是,如果您仅使用此方法,则会在示例文本中创建15个分割,因为每个空格都紧随另一个空格(对于重复的空格而言)。
(?=(?<=[^\s])\s+)
这意味着从一个前面有非空格字符的点开始拆分,而且它前面有空格。
如果文本以空格开头,您想要在第一次拆分时捕获它而没有文本,则可以将表达式修改为以下内容
(?=(?<=^|[^\s])\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+|,");