Vb右函数转换为c#
本文关键字:转换 函数 Vb | 更新日期: 2023-09-27 18:16:58
在尝试将此代码片段转换为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),项目是正确的。长度显示为31,它看起来有31个字符,但自从它。长度是系统代码,不确定如何产生错误
VB
Right(Trim(itm), itm.Length - pos)
对应c#
itm.Trim().Substring(pos)
为什么要重新发明轮子?您可以添加对Microsoft的引用。VisualBasic库,只使用string . right .
如果您不想添加该引用,则Right(str, i)
的规范替换为str.Substring(str.Length - i)
(只有一个参数,在示例中使用两个参数)。
请注意,Right
支持超过字符串长度的目标长度,而替换则不支持:Right("abc", 5)
将在VB中生成abc
,但使用"abc".Substring(3 - 5)
将产生异常。