FromIp содержит "192.168.1.1". Я хочу получить последний номер, но не могу понять, что здесь не так:
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)
Эдуардо дал правильный способ получения подстроки - мой ответ здесь просто объяснит, почему существующая не работает.
String.Substring(int, int) занимает исходную позицию и счет . Вы в основном говорите: «Перейдите с позиции 9 на 10 символов». В документации прямо указано, что она выдаст:
String.Substring(int, int)
ArgumentOutOfRangeException [if] startIndex плюс длина указывает на позиция не в этом экземпляре. -или- startIndex или длина меньше ноль.
ArgumentOutOfRangeException [if]
startIndex плюс длина указывает на позиция не в этом экземпляре.
-или-
startIndex или длина меньше ноль.
Проверенный код:
Dim FromIp As String = "192.168.1.1" Dim str As String str = FromIp.Substring(FromIp.LastIndexOf(".") + 1).ToString() MessageBox.Show(str)
Но этот переработанный код будет работать лучше:
Dim FromIp As String = "192.168.1.1" Dim IpPart As String() = FromIp.Split(".") MessageBox.Show(IpPart(3))
FromIP.Text.LastIndexOf(".") + 1
вместо
FromIP.Text.LastIndexOf(".")
и
FromIP.TextLength-FromIP.Text.LastIndexOf(".")
- последний параметр вместо
FromIP.TextLength
Насколько я помню, Substring принимает Start, Stop в качестве параметров.
Таким образом, это будет: txt.Substring(IndexOf, txt.Length - IndexOf) или только с одним параметром: Подстрока (IndexOf + 1)
txt.Substring(IndexOf, txt.Length - IndexOf)