我正在尝试编写一个带有这些示例的正则表达式:
tbZipCode
cbHavingLunch
rfvAssessment
tbAddress1
tbAddress12
输出:
邮政编码
吃午饭
评估
地址1
地址12
我的代码:
Private Shared Function formatControlName(ByVal controlName As String) As String
Dim newName As String = Nothing
If controlName <> Nothing Then
newName = Regex.Replace(controlName, "^[a-z]*|(([A-Z])|((?<=[A-Za-z])\d))", "$1").TrimStart()
End If
Return newName
End Function
我基本上想要删除第一个大写/数字之前的任何字符串(因为它将是控件的缩写,对接收此输出的人没用),然后根据它是资本还是小写后的第一个数字。
什么是正确的正则表达式模式?
编辑:上面的模式只删除了控件缩写,但没有添加空格。
答案 0 :(得分:4)
我不是正则表达式专家,但这个似乎有效:
Private Shared Function formatControlName(ByVal controlName As String) As String
Dim newName as string = _
Regex.Replace(controlName, _
"^[a-z]*|(([A-Z])|((?<=[A-Za-z])\d))", " $1").TrimStart
Return newName
End Function
请注意,在原始代码中,您需要返回newName,而不是controlName来获取regex.replace的结果。此外,您似乎将newName字符串设置为空,然后在执行regex.replace之前尝试确保它不是什么?