Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 拆分长字符串(按空格),但也存储每个单词的所有索引_C#_.net_String_Split_Indexing - Fatal编程技术网

C# 拆分长字符串(按空格),但也存储每个单词的所有索引

C# 拆分长字符串(按空格),但也存储每个单词的所有索引,c#,.net,string,split,indexing,C#,.net,String,Split,Indexing,我有一个字符串,我想用空格分割,以存储在单词词典中(足够简单)。不过,我还需要每个单词的索引和长度 到目前为止,我只有一本字典,里面有这些单词,以及它们被发现的顺序 private Dictionary<int,String> makeDictionary(String ASCII) { string[] t = ASCII.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntri

我有一个字符串,我想用空格分割,以存储在单词词典中(足够简单)。不过,我还需要每个单词的索引和长度

到目前为止,我只有一本字典,里面有这些单词,以及它们被发现的顺序

 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;
    }
private Dictionary makeDictionary(字符串ASCII)
{
字符串[]t=ASCII.Split(新[]{''},
StringSplitOptions.RemoveEmptyEntries);
Dictionary addictionary=新字典();
对于(int i=0;i
有人知道我如何在保留索引的同时使用.Split(),还是我必须使用不同的串联技术?正如下面有人发布的,使用正则表达式将给出匹配的索引

编辑:我不需要长度。正如有人指出的,我只能从绳子上得到它。我只需要这个词的起始索引

EDIT2:我将忽略重复的单词

EDIT3:以下是我将使用的字符串示例:

Lorem Ipsum只是印刷和排版的虚拟文本 工业。Lorem Ipsum一直是业界标准的虚拟文本 从16世纪开始,当一个不知名的印刷商在一个厨房里打印 把它拼凑成一本样本书。它不仅存活了下来 五个世纪,也是电子排版的飞跃, 基本保持不变。它在20世纪60年代开始流行 发布包含Lorem Ipsum通道的Letraset表,以及 最近使用的是像Aldus PageMaker这样的桌面发布软件 包括Lorem Ipsum的版本

所以第一对元素是

[0]=>Lorum

[6] =>同侧

[12] =>是

其中数字0,6,12是字符串中单词的原始索引


Match具有索引和长度

您是说在拆分字符串时保留顺序位置
。。?另外,如果您可以粘贴您尝试拆分的字符串的示例。您是指索引在原始字符串中的位置吗?或在分割阵列中的位置?此外,你的字典似乎是倒退的。它应该使用字符串作为键,这避免了在每次迭代中都需要使用
.ContainsValue
。我同意
Matt
字典应该是
dictionary aDictionary=new dictionary()您希望如何搜索或检索这些?从技术上讲,拆分将根据我阅读的内容保留信息。Length-item[i]给出了它的关系,类似于.Last()实际上是array.Lenth-1…您希望如何在列表中存储索引和长度?长度只是字符串的一个属性。索引是单词的索引还是字符位置的索引?
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();
var dict = words.GroupBy(w => w.Str)
                .ToDictionary(g => g.Key, g => g.Select(x => x.Offset).ToList());