Reputation:
FromIp
contains "192.168.1.1"
. I want to get the last number, but I can't figure out what's wrong here:
Dim str As String
str = FromIP.Text.Substring(FromIP.Text.LastIndexOf("."), FromIP.Text.Length).ToString()
MessageBox.Show(FromIP.Text.Length)
Upvotes: 1
Views: 3462
Reputation: 4175
FromIP.Text.LastIndexOf(".") + 1
instead of
FromIP.Text.LastIndexOf(".")
and
FromIP.TextLength-FromIP.Text.LastIndexOf(".")
is the last parameter instead of
FromIP.TextLength
Upvotes: 1
Reputation: 39413
Tested code:
Dim FromIp As String = "192.168.1.1"
Dim str As String
str = FromIp.Substring(FromIp.LastIndexOf(".") + 1).ToString()
MessageBox.Show(str)
But this refactored code will work better:
Dim FromIp As String = "192.168.1.1"
Dim IpPart As String() = FromIp.Split(".")
MessageBox.Show(IpPart(3))
Upvotes: 4
Reputation: 1500065
Eduardo has given the correct way of getting the substring - my answer here will just explain why the existing one fails.
String.Substring(int, int)
takes a starting position and a count. You're basically saying, "Go from position 9 for 10 characters". The documentation explicitly states it will throw:
ArgumentOutOfRangeException [if]
startIndex plus length indicates a position not within this instance.
-or-
startIndex or length is less than zero.
Upvotes: 5
Reputation: 54752
As far as I remember, Substring takes Start,Stop as parameters.
So that would be: txt.Substring(IndexOf, txt.Length - IndexOf)
or just with one parameter: Substring(IndexOf + 1)
Upvotes: 0