获取子字符串,直到第一个数字字符

Yos*_*yke 2 vb.net

就像我已经解释过的标题一样,我想获取一个字符串的子字符串(包含地址),而我只想知道街道。

不能只接受文本(非数字)字符,因为这样该框将保留。不能将子字符串带到第一个空格,因为街道名可以包含一个空格。

例如'developerstreet 123a'->想要有'developerstreet'。'a'是房子的盒子编号,我对此不感兴趣。

如何在VB.NET中执行此操作?

Ste*_*art 5

解析地址非常困难,因此,我提醒您确保对所进行的选择非常仔细。我强烈建议您查看邮政服务提供的文档。如果这些是美国地址,则应先查看USPS出版物28

但是,要回答您的特定问题,您可以使用Char.IsDigit方法在字符串中找到第一个数字字符的索引。您可能还想看看该Char.IsNumber方法,但这可能比您真正想要的更具包容性。例如,这将获取input字符串中第一个数字字符的索引:

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
Run Code Online (Sandbox Code Playgroud)

但是,对于像这样的复杂字符串解析,我建议学习正则表达式。在字符串的开头获取非数字部分变得很简单RegEx

Dim m As Match = Regex.Match(input, "^\D+")
If m.Success Then
    Dim nonNumericPart As String = m.Value
End If
Run Code Online (Sandbox Code Playgroud)

这是上面示例中正则表达式的含义:

  • ^ -匹配的字符串必须在行的开头
  • \D -任何非数字字符
  • + -一次或多次