Vb.net 获取子字符串直到第一个数字字符
就像我的标题已经解释过的那样,我想要得到一个字符串的子字符串(包含地址),我只想要街道 不可能只接受文本(非数字)字符,因为这样框将保留。 在第一个空格之前不可能使用子字符串,因为streetname可以包含空格 例如,“developerstreet 123a”->希望使用“developerstreet” “a”是房子的箱号,我对此不感兴趣 如何在VB.NET中执行此操作?尝试以下操作:Vb.net 获取子字符串直到第一个数字字符,vb.net,Vb.net,就像我的标题已经解释过的那样,我想要得到一个字符串的子字符串(包含地址),我只想要街道 不可能只接受文本(非数字)字符,因为这样框将保留。 在第一个空格之前不可能使用子字符串,因为streetname可以包含空格 例如,“developerstreet 123a”->希望使用“developerstreet” “a”是房子的箱号,我对此不感兴趣 如何在VB.NET中执行此操作?尝试以下操作: Private Sub MyFormLoad(sender As Object, e As Ev
Private Sub MyFormLoad(sender As Object, e As EventArgs) Handles Me.Load
Dim str As String = "developerstreet 123a"
Dim index As Integer = GetIndexOfNumber(str)
Dim substr As String = str.Substring(0, index)
MsgBox(substr)
End Sub
Public Function GetIndexOfNumber(ByVal str As String)
For n = 0 To str.Length - 1
If IsNumeric(str.Substring(n, 1)) Then
Return n
End If
Next
Return -1
End Function
输出结果将是:developerstreet解析地址是出了名的困难,因此我提醒您确保对所做的选择非常慎重。我强烈建议审查邮政服务提供的文件。如果这些是美国地址,您应该首先查看 但是,要回答您的特定问题,可以使用该方法查找字符串中第一个数字字符的索引。您可能还想看看这个方法,但这可能比您真正想要的更具包容性。例如,这将获得
输入
字符串中第一个数字字符的索引:
Dim index As Integer = -1
For i As Integer = 0 to input.Length - 1
If Char.IsDigit(input(i)) Then
index = i
Exit For
End If
Next
然而,对于像这样的复杂字符串解析,我建议学习正则表达式。在以下情况下,获取字符串开头的非数字部分变得很简单:
下面是上面示例中正则表达式的含义:
-匹配字符串必须从行的开头开始^
-任何非数字字符\D
-一次或多次+
Dim m As Match = Regex.Match(input, "^\D+")
If m.Success Then
Dim nonNumericPart As String = m.Value
End If
text.Substring(0, text.IndexOfAny("0123456789"))