2014-10-07 3 views
1

При попытке получить оставшиеся 2 символа из строки, я получаю сообщение:слева не является членом microsoft.visualbasic.strings

«левый» является моголь членом «Microsoft.VisualBasic.Strings»

До сегодняшнего дня я всегда думал, что это должны быть самые простые вещи, которые нужно решить. Но ...

Вот код, я использую:

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

И это все, что есть к этому! Что здесь не так?

Питер

+1

Разве это не 'Left (....)'? –

+3

Отпустите свое Visual Basic прошлое. Обнимите сейчас. 'ActivityCode.Substring (0, 2)' – LarsTech

+0

Часть из рекомендаций выше Strings.Left должна работать также – Steve

ответ

3

Почему бы вам не использовать методы .NET струнные вместо этого?

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

Для чего это стоит, вы также можете создать расширение, если Вы пропускаете этот метод:

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 

Теперь вы можете использовать его таким образом:

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

Хорошая работа @TimSchmelter! Способы строки .Net - это решение. И чтобы ответить на ваш первоначальный вопрос: почему я не использую это? потому что я использовал «старый» синтаксис и работал до сих пор. Никаких дальнейших аргументов. Ваш метод расширения кажется немного переполненным ... Но спасибо за предложение в любом случае! –

1

использования это так:

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

Но y ou должен действительно использовать .NET-методы, такие как .SubString()

+0

Хотелось бы узнать, почему это было приостановлено. – Jhon

+0

Это был не я, а если бы я должен был догадаться. Это потому, что вы сказали использовать LEFT(), а затем сказали, что вам нужно «действительно» сделать что-то еще. Иронии. – Steve

+0

Я только предлагал, так как использование современных методов более целесообразно, я думаю. – Jhon

1

Исследование немного глубже, основываясь на приведенных предложениях (спасибо всем !!!) Я думаю, что ключ к решению заключается в том, что мой оригинальный код-код является частью Проект приложения Windows 8.1 Store. Я не знал о том, что библиотека Microsoft.VisualBasic явно недоступна в этом проекте. Поэтому мне нужно перейти на .NET-варианты синтаксиса.

Так что, несмотря на предложения, говорящие, что он РАБОТАЕТ, это просто кажется невозможным.

Я прав?

Смежные вопросы