我如何在c#中分割以提取空格

本文关键字:分割 提取 空格 | 更新日期: 2023-09-27 17:49:32

SplitRegex.Split用于提取句子中的单词并将其存储在数组中。相反,我想提取句子中的空格并将它们存储在数组中(这个句子可能包含多个空格)。有简单的方法吗?我首先尝试正常拆分它,然后使用string.split(theSplittedStrings, StringSplitOptions.RemoveEmptyEntries),然而,这并没有保留存在的空间量。

---------- EDIT -------------

例如

。如果有一个句子"This is a test"。我想创建一个字符串{ " ", " ", " "}的数组。

---------- EDIT END ---------

感谢您的帮助。

谢谢。

我如何在c#中分割以提取空格

EDIT:

根据你编辑的问题,我相信你可以通过简单的迭代来做到这一点,如:

string str = "This is     a  test";
List<string> spaceList = new List<string>();
var temp = str.TakeWhile(char.IsWhiteSpace).ToList();
List<char> charList = new List<char>();
foreach (char c in str)
{
    if (c == ' ')
    {
        charList.Add(c);
    }
    if (charList.Any() && c != ' ')
    {
        spaceList.Add(new string(charList.ToArray()));
        charList = new List<char>();
    }
}

会在List<string>的不同元素中给你空格,如果你需要一个数组,你可以调用ToArray

(旧的回答)你不需要string.Split。您可以计算字符串中的空格,然后创建如下数组:

int spaceCount = str.Count(r => r == ' ');
char[] array = Enumerable.Repeat<char>(' ', spaceCount).ToArray();

如果你想考虑White-Space(空格,换行符,制表符)作为空格,那么你可以使用:

int whiteSpaceCount = str.Count(char.IsWhiteSpace);

此代码匹配输入字符串中的所有空格并输出其索引:

const string sentence = "This  is a test   sentence.";
MatchCollection matches = Regex.Matches(sentence, @"'s");
foreach (Match match in matches)
{
    Console.WriteLine("Space at character {0}", match.Index);
}

下面的代码以数组的形式检索所有的空间组:

const string sentence = "This  is a test   sentence.";
string[] spaceGroups = Regex.Matches(sentence, @"'s+").Cast<Match>().Select(arg => arg.Value).ToArray();

在任何一种情况下,您都可以查看Match实例的Index属性值,以获得字符串中space/space组的位置。