我在VB.NET
寻找一个能让我删除X直到字符串结尾的函数
假设 X = ":"
,这意味着应该删除从 :
到end of the string
的内容。
示例1:
字符串:Cary:Bondoc
结果:Cary
示例2:
字符串:192.168.111.111:23512
结果:192.168.111.111
答案 0 :(得分:4)
您可以使用此代码:
Dim str = "192.168.1.1:8080"
Dim x = ":"
Dim index = str.IndexOf(x)
If (index >= 0) Then
str = str.Substring(0, index)
End If
MessageBox.Show(str)
结果将是192.168.1.1
关键是使用IndexOf和Substring方法。
报告指定的第一次出现的从零开始的索引 此实例中的Unicode字符或字符串。该方法返回 如果在此实例中找不到字符或字符串,则为-1。
String.Substring Method (Int32, Int32)
从此实例中检索子字符串。子串从a开始 指定的字符位置并具有指定的长度。
答案 1 :(得分:3)
为什么不使用简单的Split
。
Dim msg = "192.168.111.111:23512".Split(":")
MsgBox(msg(0))
msg = "Cary:Bondoc".Split(":")
MsgBox(msg(0))
<{>} Split
:
分隔符,并始终从数组中取出第一个。通过我,最简单的方式最短的方式。
或者,还有另一种方式:
Dim msg As String = "Cary:Bondoc"
StrRem(msg, ":")
MsgBox(msg)
Private Sub StrRem(ByRef msg As String, ByVal del As String)
Dim res = msg.Split(del)
msg = res(0)
End Sub
在子程序中使用ByRef
,msg
变量将随结果更新。所以,通过这种方式你不需要功能。
答案 2 :(得分:1)
另一种解决方案:
Dim msg As String
Dim X As String = ":"
msg = "192.168.111.111:23512"
MsgBox(CutString(msg, X))
功能如下:
Private Function CutString(ByVal str As String, ByVal X As Char) As String
Dim l, p As Integer
l = str.Length
p = str.IndexOf(X)
If p = -1 Then p = l
CutString = str.Remove(p, l - p)
End Function