从单词索引中获取完整的句子

Spe*_*dge 2 c# regex substring indexof

我试图找到一种比下面的代码更优雅的方法,以基于其中一个单词的索引获取句子列表。因此,例如,如果我给它一个单词列表,例如用户名,它会找到所有这些单词的索引(此操作已经完成,并且是GetWordsMatches方法),然后使用该单词的索引,我想抓住整个句子。

我有两个问题,一个,我无法弄清楚如何在单词上一个单词之前看一眼,只是结束一两个,我无法弄清楚如果最后一个单词匹配不包含单词,如何防止它崩溃文件结束前的句点。

public static List<string> GetSentencesFromWords(List<string> Words, string FileContents)
    {
        List<string> returnList = new List<string>();
        MatchCollection mColl = GetWordsMatches(Words,FileContents);
        foreach (Match ma in mColl)
        {
            int tmpInd = ma.Index;
            int endInd = FileContents.IndexOf(".", tmpInd);
            string tmp = FileContents.Substring(tmpInd,endInd);
            returnList.Add(tmp);
        }
        return returnList;
    }
Run Code Online (Sandbox Code Playgroud)

有没有更优雅的方法可以做到这一点?

NSG*_*aga 5

快...

  • 您可以LastIndexOf(str, index)用来从某个位置向后搜索,

  • 对于“结束条件”,您应该if.搜索中添加一个(如果到达末尾则返回“ -1”),

...无论如何,最好分割文件内容(用.定界符),这样就不会出现最后一个问题,因为它会占用最后一行。然后搜索单词(在每行中,IndexOf使用current index)。或者,我可能会使用枚举数(w / yield return)扩展方法来并行执行所有操作-并返回IEnumerable,以便您可以更“实用”,在查询中添加其他内容。

希望这可以帮助