需要从string中的数字中分离出字母,通过vb.net

我希望我的代码能够在string的任何位置find字母旁边的数字,并在两者之间插入一个空格。

我有几个地址没有空格,我需要通过从字母中分离出数字来插入空格。 例如:

123MainSt.Box123

应该是123主圣盒123

要么

123Parkway134

应该是:123 Parkway 134

这里是我从我的代码开始,但它是在开始梳理两个数字….

Dim Digits() As String = Regex.Split(Address, "[^0-9]+") 'MsgBox(Digits.Count) If Digits.Length > 2 Then ' For Each item As String In Digits Dim Letters As String = Regex.Replace(Address, "(?:[0-9]+\.?[0-9]*|\.[0-9]+)", "") rCell.Value = Digits(0) & Letters & Digits(1) End If If Digits.Length < 3 Then If Address.Contains("th") Then Else Dim Part1 As String = Regex.Replace(Address, "[^0-9]+", "") Dim Part2 As String = Regex.Replace(Address, "(?:[0-9]+\.?[0-9]*|\.[0-9]+)", "") 'MsgBox(Part1 & " " & Part2) rCell.Value = Part1 & " " & Part2 End If End If 

我希望我的代码能够在string的任何位置find字母旁边的数字,并在两者之间插入一个空格。

你可以使用的正则expression式是

 Regex.Replace(input, "(?<=\d)(?=\p{L})|(?<=\p{L})(?=\d)", " ") 

第一个select – (?<=\d)(?=\p{L}) – 匹配一个数字和一个字母之间的位置,第二个select – (?<=\p{L})(?=\d) – 匹配字母和数字之间的位置。

请注意(?<=\p{L})是一个正向后置,在当前位置和之前需要一个字母
(?= \ d)`是在当前位置之后需要一个数字的正向预测。 这些是不会消耗文本的周边,因此您可以用(=插入)空格replace空的空格。

这是一个快速的function:

  Private Function AddSpaces(ByVal input As String) As String If input.Length < 2 Then Return input Dim ReturnValue As String = String.Empty Dim CurrentChar, NextChar As String For x As Integer = 1 To input.Length CurrentChar = Mid(input, x, 1) NextChar = Mid(input, x + 1, 1) ReturnValue &= CurrentChar If (IsNumeric(CurrentChar) AndAlso (Not IsNumeric(NextChar))) OrElse ((Not IsNumeric(CurrentChar)) AndAlso IsNumeric(NextChar)) Then ReturnValue &= " " End If Next Return ReturnValue End Function