在尝试将此代码段转换为C#时遇到一些问题

   Private Shared Function GetOccInt(ByVal itm As String) As Integer
      Dim pos As Integer = InStr(itm, ">")
      Dim strTemp As String = Trim(Replace(Right(Trim(itm), itm.Length - pos), "</b>)</a>", String.Empty))
      pos = InStr(strTemp, ">")
      Return Convert.ToInt32(Trim(Right(strTemp, strTemp.Length - pos)))
   End Function


我最后的正确选择是,但显然不是:

  private static int GetOccInt(string itm)
    {
        var pos = itm.IndexOf(">", StringComparison.Ordinal);
        var strTemp = itm.Trim().Substring(itm.Length - pos, itm.Length).Replace("</b>)</a>", "");
        pos = strTemp.IndexOf(">", StringComparison.Ordinal);
        return Convert.ToInt32(strTemp.Trim().Substring(strTemp.Length - pos, strTemp.Length));
    }


调试时,子字符串函数的参数超出范围错误,message =索引和长度必须引用字符串中的位置。
参数名称:长度

第一次击中断点时,索引是正确的(12),而itm.Length表示为31,它似乎有31个字符,但是由于itm.length是系统代码,因此不确定如何生成错误。

最佳答案

VB

Right(Trim(itm), itm.Length - pos)


对应于C#

itm.Trim().Substring(pos)

09-26 22:46