Функция SubString в vb.net выдает исключение - PullRequest
1 голос
/ 12 декабря 2008

FromIp содержит "192.168.1.1". Я хочу получить последний номер, но не могу понять, что здесь не так:


    Dim str As String
    str = FromIP.Text.Substring(FromIP.Text.LastIndexOf("."), FromIP.Text.Length).ToString()
    MessageBox.Show(FromIP.Text.Length)

Ответы [ 4 ]

5 голосов
/ 12 декабря 2008

Эдуардо дал правильный способ получения подстроки - мой ответ здесь просто объяснит, почему существующая не работает.

String.Substring(int, int) занимает исходную позицию и счет . Вы в основном говорите: «Перейдите с позиции 9 на 10 символов». В документации прямо указано, что она выдаст:

ArgumentOutOfRangeException [if]

startIndex плюс длина указывает на позиция не в этом экземпляре.

-или-

startIndex или длина меньше ноль.

4 голосов
/ 12 декабря 2008

Проверенный код:

    Dim FromIp As String = "192.168.1.1"
    Dim str As String
    str = FromIp.Substring(FromIp.LastIndexOf(".") + 1).ToString()
    MessageBox.Show(str)
  • Вы должны добавить 1 к LastIndexOf, чтобы пропустить точку
  • Нет необходимости указывать длину Подстроки, когда вы хотите, чтобы все остальные строки

Но этот переработанный код будет работать лучше:

    Dim FromIp As String = "192.168.1.1"
    Dim IpPart As String() = FromIp.Split(".")
    MessageBox.Show(IpPart(3))
1 голос
/ 12 декабря 2008
FromIP.Text.LastIndexOf(".") + 1 

вместо

FromIP.Text.LastIndexOf(".") 

и

FromIP.TextLength-FromIP.Text.LastIndexOf(".") 

- последний параметр вместо

FromIP.TextLength
0 голосов
/ 12 декабря 2008

Насколько я помню, Substring принимает Start, Stop в качестве параметров.

Таким образом, это будет: txt.Substring(IndexOf, txt.Length - IndexOf) или только с одним параметром: Подстрока (IndexOf + 1)

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