【问题标题】:How to find the index of the shortest word in a string using C#?如何使用 C# 查找字符串中最短单词的索引?
【发布时间】:2018-11-27 16:41:12
【问题描述】:

假设我有一个字符串并且知道我要查找的单词。这个词特别是最短的一个。如何在不遍历每个字符的情况下找到它的索引? String.IndexOf() 显然不起作用,因为在更长的单词中可能会遇到相同的字符序列。有没有办法解决?如果知道如何在没有 LINQ 的情况下执行此操作,那就太好了。

例如,单词是“狗”,我在“the .. doginess, of this dog.,. is dogy.”中寻找它。即使不是 7,我也会得到 7 的结果。

【问题讨论】:

    标签: c# string indexing


    【解决方案1】:

    我会使用正则表达式,其中\b 表示“单词边界”。找到一个匹配项,并返回该匹配项的索引。

    var r = new Regex("\bfoo\b");
    var result = r.Match(searchString).Index;
    

    【讨论】:

    • 撇号也算作一个单词边界,所以\bDon\b会匹配Don't的前半部分。
    【解决方案2】:

    所以我自己解决了。我使用了正则表达式,与上面的非常相似。我的是这样的:

    string pattern = "[^a-zA-Z0-9]+" + myWord + "[^a-zA-Z0-9]";
    int index = Regex.Match(someString, pattern).Index;
    

    感谢您的帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-13
      • 1970-01-01
      • 1970-01-01
      • 2014-05-07
      • 1970-01-01
      • 2018-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多