Последний, но один символ в строке vb.net - PullRequest
1 голос
/ 24 февраля 2010

Как найти последний, но один символ в строке vbstring

например В строке V1245-12V0 я хочу вернуть V

Ответы [ 9 ]

4 голосов
/ 24 февраля 2010

Не используйте подстроку, чтобы получить только один символ

Dim MyString As String = "V1245-12V0"
Dim MyChar As Char = MyString(MyString.Length - 2)
2 голосов
/ 24 февраля 2010

Извините, что прошло много времени с тех пор, как я сделал VB, так что это может быть не идеально (возможно, это смесь C # и VB), но вы поняли:

Dim s = "V1245-12V0"
Dim lastButOneLetter = String.Empty

If s.Length > 1 Then
    'Can only get the last-but-one letter from a string that is minimum 2 characters
    lastButOneLetter = s.Substring(s.Length - 2, 1)
Else
    'do something if string is less than 2 characters
End If

РЕДАКТИРОВАТЬ: исправлено, чтобы быть скомпилированным кодом VB.NET.

1 голос
/ 24 февраля 2010
Dim secondToLastChar As Char 
secondToLastChar = Microsoft.VisualBasic.Strings.GetChar(mystring, mystring.Length - 2)

http://msdn.microsoft.com/en-us/library/4dhfexk4(VS.80).aspx

Или просто помните, что любая строка является массивом символов;

secondToLastChar = mystring(mystring.Length - 2)
0 голосов
/ 27 августа 2016

Вот решение VB:

Dim text = "V1245-12V0"
Dim v = Left(Right(text, 2), 1)

Вы не должны проверять длину text, за исключением вашей семантики относительно того, что вы хотите получить для пустых (и Nothing) и односимвольных строк.

0 голосов
/ 24 февраля 2010

Было ли это сложно?

dim mychar as string
dim yourstring as string
yourstring="V1245-12V0"
mychar=yourstring.Substring(yourstring.Length - 2, 1)
0 голосов
/ 24 февраля 2010

Если вы хотите получить последний буквенный символ в строке, вы можете использовать запрос LINQ, такой как (C #):

var d = from c in myString.ToCharArray().Reverse()
                where Char.IsLetter(c)
                select c;
return d.First();
0 голосов
/ 24 февраля 2010

Вы можете иметь свои собственные функции, такие как

Function Left(ByVal str as string, byval index as integer) As String

    Left=str.Substring(0,index);
End Function

Function Right(ByVal str as string, byval index as integer) As String

    Right=str.Substring(str.Length-index)
End Function

И используйте их, чтобы получить то, что вам нужно.

0 голосов
/ 24 февраля 2010

Используйте Substring в строке s, которая содержит 'V1245-12V0'

s.Substring(s.Length - 2, 1);
0 голосов
/ 24 февраля 2010

строка. Подстрока (строка. Длина - 2, 1);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...