分割长字符串(通过空格),但也存储每个单词的所有索引

本文关键字:存储 单词 索引 字符串 空格 分割 | 更新日期: 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

匹配类

匹配有索引和长度