Vb.net 获取子字符串直到第一个数字字符

Vb.net 获取子字符串直到第一个数字字符,vb.net,Vb.net,就像我的标题已经解释过的那样,我想要得到一个字符串的子字符串(包含地址),我只想要街道 不可能只接受文本(非数字)字符,因为这样框将保留。 在第一个空格之前不可能使用子字符串,因为streetname可以包含空格 例如,“developerstreet 123a”->希望使用“developerstreet” “a”是房子的箱号,我对此不感兴趣 如何在VB.NET中执行此操作?尝试以下操作: Private Sub MyFormLoad(sender As Object, e As Ev

就像我的标题已经解释过的那样,我想要得到一个字符串的子字符串(包含地址),我只想要街道

不可能只接受文本(非数字)字符,因为这样框将保留。 在第一个空格之前不可能使用子字符串,因为streetname可以包含空格

例如,“developerstreet 123a”->希望使用“developerstreet” “a”是房子的箱号,我对此不感兴趣

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

尝试以下操作:

    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"))