按索引查找字符串中的单词

扬·塔米斯·科森

我试图通过指定的索引在字符串中获取一个单词,一个单词只能由字母和数字组成。

我已经尝试了指定的代码,但不幸的是它产生了以下异常:“长度不能小于零。参数名称:长度”。我猜这发生在第 18 行。请帮忙。

代码的目标是通过指定的索引获取单词。

private string WordByIndex(string text, int index)
{
  try
  {
    int start = index;
    int end = index;

    while (char.IsLetterOrDigit(text[start]))
    {
      start--;
    }
    start++;

    while (char.IsLetterOrDigit(text[end]))
    {
      end++;
    }

    return text.Substring(start, end - start);
  }
  catch (Exception ex) { throw ex; }
}
用户1781290

您只需要将 start 和 end 保持在字符串的边界内:

private string WordByIndex(string text, int index)
{
    int start = index;
    int end = index;

    while (start >= 1 && char.IsLetterOrDigit(text[start - 1]))
    {
        start--;
    }

    while (end < text.Length && char.IsLetterOrDigit(text[end]))
    {
        end++;
    }

    return text.Substring(start, end - start);
}

(我删除了你的 try-catch-block 因为它什么都不做 atm)

您的方法的好处是不创建多余的字符串副本或使用正则表达式

https://dotnetfiddle.net/vFacCN

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章