2013-10-18 28 views
1

我使用从VB的旧代码,但我想知道什么是对vb.net新的代码,最好的办法..旧的Visual Basic和中期左功能

test = Mid(strData, Pos1 + Len(strFirst)) 
test = Mid(strData, Pos1 + Len(strFirst) + 3 + Len(strID)) 
test = Microsoft.VisualBasic.Left(strID, Pos2 - 1) 
+0

VB.NET还是有[所有字符串函数(http://msdn.microsoft .com/en-us/library/microsoft.visualbasic.strings_methods(v = vs.110).aspx)VB6。我会坚持使用这些,而不是试图重新发明轮子。现在,如果您正在迁移到C#,我的答案会有所不同。 – Icemanind

+2

VB字符串函数只是底层NET函数的包装器。除非你是VB6的向导,或者正在使用大量的遗留代码,否则几乎没有理由通过中间层。 – Plutonix

回答

4

既然你没有提供的数据内容变量:strDatastrIDstrFirstPos1Pos2我不能写一个更好的代码来解释,但这个例子应该足够了。

等效的VB6功能:

Len = "String".Length 
Left = "String".Substring(0, length) 
Mid = "String".Substring(start position, length) 

然后VB.NET代码翻译应该看起来像这样:

test = strData.Substring(pos1 + strFirst.length) 
test = strData.Substring(pos1 + strFirst.length + 3 + strID.length) 
test = strID.Substring(Pos2 - 1) 
+3

重要的是要注意,Substring是基于零的,其中Mid是一个基础,并且Mid不会抛出异常,请求的值超出范围。另外,Mid可以充当替换功能,而这在Substring中不可用。 – jfrankcarr

+1

@jfrankcarr - 在VB6中,字符串函数可能基于0或1,具体取决于Option Base设置。 –

+0

@ChrisDunaway - 确实如此,但很难看到任何VB6程序员,除了被迫使用VB的C++程序员之外,在字符串函数中使用0个碱基。 – jfrankcarr