public override Tuple <string, V> Next() { while (_entries.Count == 0 && _begin < c.Length) { _entries = _trie.PrefixMatchWithValue(c, _begin, c.Length, 0); _begin++; } if (_entries.Count == 0 && _begin < c.Length) // 总觉得这是多余的 { _entries = _trie.PrefixMatchWithValue(c, _begin, c.Length, 0); _begin++; } if (_entries.Count == 0) { return(null); } var fst = _entries[0]; _entries.RemoveAt(0); offset = _begin - 1; return(fst); }
public override Tuple <string, Pinyin[]> Next() { while (_begin < c.Length) { var list = _trie.PrefixMatchWithValue(c, _begin, c.Length, 0); if (list.Count == 0) { ++_begin; } else { var last = list[list.Count - 1]; offset = _begin; _begin += last.Item1.Length; return(last); } } return(null); }
/// <summary> /// 获取下一个(最长)匹配词语 /// </summary> /// <returns></returns> public override Tuple <string, string> Next() { while (_begin < c.Length) { var list = _trie.PrefixMatchWithValue(c, _begin, c.Length, 0); if (list.Count == 0) { ++_begin; } else { var t = list.Last(); // 选取最长匹配 offset = _begin; _begin += t.Item1.Length; return(t); } } return(null); }