我如何在c#中分割以提取空格
本文关键字:分割 提取 空格 | 更新日期: 2023-09-27 17:49:32
Split
或Regex.Split
用于提取句子中的单词并将其存储在数组中。相反,我想提取句子中的空格并将它们存储在数组中(这个句子可能包含多个空格)。有简单的方法吗?我首先尝试正常拆分它,然后使用string.split(theSplittedStrings, StringSplitOptions.RemoveEmptyEntries)
,然而,这并没有保留存在的空间量。
---------- EDIT -------------
例如。如果有一个句子"This is a test"
。我想创建一个字符串{ " ", " ", " "}
的数组。
---------- EDIT END ---------
感谢您的帮助。
谢谢。
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组的位置。