如何在c#中使用VB6 InStr IntStRev和Mid?

时间:2018-06-01 22:11:31

标签: c#

我以后使用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

1 个答案:

答案 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 );
}