分割长字符串(通过空格),但也存储每个单词的所有索引
本文关键字:存储 单词 索引 字符串 空格 分割 | 更新日期: 2023-09-27 18:04:27
我有一个字符串,我想通过空格将其分割以存储在单词字典中(非常简单)。但是,我还需要每个单词的索引和长度。
到目前为止,我只有一个单词的字典和它们被发现的顺序....
private Dictionary<int,String> makeDictionary(String ASCII)
{
string[] t = ASCII.Split(new[] { ' ' },
StringSplitOptions.RemoveEmptyEntries);
Dictionary<int, string> aDictionary = new Dictionary<int, string>();
for (int i = 0; i < t.Length; i++)
{
t[i] = stripSymbolsFromString(t[i]);
if (!aDictionary.ContainsValue(t[i]) && t[i] != "")
{
aDictionary.Add(i, t[i]);
}
}
return aDictionary;
}
有没有人知道我如何在保持索引的同时使用。split(),或者我必须使用不同的连接技术?正如有人在下面发布的,使用Regex将给出匹配的索引。
EDIT:我不需要长度。正如有人指出的,我可以从弦中得到它。我只需要单词的起始索引。
EDIT2:我将忽略重复的单词。
EDIT3:这里是一个字符串的例子,我将使用:
Lorem Ipsum只是打印和排版的虚拟文本行业。Lorem Ipsum一直是业界标准的虚拟文本从16世纪开始,一个不知名的印刷工拿了一大堆字把它搅乱,做成了一本样书。它不仅存活了下来五个世纪以来,也是电子排版的飞跃,基本不变的它在20世纪60年代流行起来发布包含Lorem Ipsum段落的小册子,以及最近更多的是使用桌面出版软件,比如Aldus PageMaker包括Lorem Ipsum的版本
所以前两个元素是
[0] => Lorum,
[6] => Ipsum
[12] =>
,其中数字0,6,12是字符串
string s = "abc def ghijkl mno abc";
var words = Regex.Matches(s, @"[^ ]+").Cast<Match>()
.Select(m => new
{
Str = m.Value, //OR Length = m.Value.Length
Offset = m.Index
})
.ToList();
可以进一步处理words
形成dictionary
var dict = words.GroupBy(w => w.Str)
.ToDictionary(g => g.Key, g => g.Select(x => x.Offset).ToList());
Regex
匹配类
匹配有索引和长度