我以后使用VB6进行了项目我切换到c#我的VB6代码中有一个函数我想在我的C#项目中使用。
String.Substring可能会这样做。
这是我的VB6代码。
position = InStr(1, strout, "4000072")
If position > 0 Then
position2 = InStrRev(strout, "0000", position)
strout = Mid$(strout, position2 - 512, 512)
End If
答案 0 :(得分:1)
VB6: index = InStr( haystack, needle )
C# : index = haystack.IndexOf( needle );
VB6: index = InStrRev( haystack, needle )
C# : index = haystack.LastIndexOf( needle );
VB6: substring = Mid( largerString, start, length )
C# : substring = largerString.Substring( start, length );
在你的情况下:
position = InStr(1, strout, "4000072")
If position > 0 Then
position2 = InStrRev(strout, "0000", position)
strout = Mid$(strout, position2 - 512, 512)
1
中的InStr( 1, haystack, needle )
表示"从头开始",它是不必要的,因此可以省略。 .NET中的注释(包括VB.NET和C#)字符串索引从0
开始,而不是1
。$
末尾的Mid$
是早在20世纪80年代早期VB的一个古老的保留,即使在VB6中也是如此。您的If
也遗漏了End If
。所以:
Int32 index400 = strout.IndexOf( "4000072" );
if( index400 > -1 ) {
index000 = strout.LastIndexOf( "00000", index400 );
Int32 start = Math.Max( index0000 - 512, 0 );
Int32 length = Math.Min( 512, index0000.Length - start );
strout = strout.Substring( start, length );
}