2014-10-07 50 views
1

的成员,而试图让左2个字符一个字符串的我得到的消息:左边是不是microsoft.visualbasic.strings

“左”的NOG“Microsoft.VisualBasic.Strings”中的一员

现在直到今天,我总是认为这将是最简单的事情来解决。但是......

下面是我使用的代码:

If Strings.Left(ActivityCode, 2) = Selection Then 

而这一切就是这么简单!这里有什么问题?

Peter

+1

难道只是'左(....)'? – 2014-10-07 21:27:00

+3

放开你的Visual Basic过去。拥抱现在。 'ActivityCode.Substring(0,2)' – LarsTech 2014-10-07 21:30:25

+0

从Strings.Left上面的建议的一部分应该也可以工作 – Steve 2014-10-07 21:32:06

回答

3

为什么不使用.NET字符串方法呢?

Dim leftTwo = If(activityCode.Length <= 2, activityCode, activityCode.Remove(2)) 
If leftTwo = Selection Then 
    ' ... ' 
End If 

对于它的价值,你还可以创建,如果你错过了这个方法的扩展:

If activityCode.Left(2) = Selection Then 
    ' ...' 
End If 
+0

@TimSchmelter干得好! .Net字符串方法是解决方案。并回答你最初的问题:为什么我不使用这个?因为我使用了“旧”的语法,直到现在才起作用。没有更多的论据。你的扩展方法似乎有点矫枉过正......但无论如何谢谢你的建议! – 2014-10-09 20:36:31

1

用途:

Imports System.Runtime.CompilerServices 

Module StringExtensions 
    <Extension()> 
    Public Function Left(Str As String, takeLeft As Int32) As String 
     If takeLeft < 0 Then Throw New ArgumentException("takeLeft must be greater than or equal 0", "takeLeft") 
     If Str Is Nothing Then Return Nothing 
     If Str.Length <= takeLeft Then Return Str 
     Return Str.Remove(takeLeft) 
    End Function 
End Module 

现在你可以通过这种方式使用它它这样:

Dim TestString As String = "Hello World!" 
' Returns "Hello". 
Dim subString As String = Microsoft.VisualBasic.Left(TestString, 5) 

但是y ou应该真的使用.NET方法,如.SubString()

+0

我想知道为什么这是downvoted。 – Jhon 2014-10-07 21:40:02

+0

这不是我,但如果我不得不猜测。这是因为你说过使用LEFT(),然后说你应该“真的”做别的事情。讽刺。 – Steve 2014-10-07 22:47:42

+0

我只是建议,因为使用.NET现代方法更可取,我猜。 – Jhon 2014-10-08 01:11:37

1

根据给出的建议进行更深入的调查(谢谢大家!!!)我认为解决方案的关键在于我的原始码字段是Windows 8.1商店应用程序项目。我没有意识到Microsoft.VisualBasic库在这类项目中显然不可用。所以我必须切换到语法的.NET变体。

所以,尽管有建议说它必须工作,但它似乎是不可能的。

我对不对?

相关问题