如何从VBscript中的字符串中删除字符

时间:2011-09-21 20:33:37

标签: vbscript formatting

我是vbscript和Stack Overflow的新手,可以真正使用一些帮助。

目前,我正在尝试格式化从图像中读取并存储在变量中的电话号码。因为图像是“脏的”,所以额外的角色会进入,例如句点或括号。我已经尽可能地限制了这个领域,以帮助阻止额外的角色,但是唉!

例如,我想将“123.4567890”变成“123 456 7890”(不包括双引号)。麻烦的是我不知道可能会有多余的角色被拿走,排除了简单的替换。

我的逻辑是删除任何非数字字符,从左边开始,在第三个数字后插入一个空格,在第六个数字后插入一个空格。

任何帮助都会很棒,如果需要,请随时询问更多信息。

2 个答案:

答案 0 :(得分:4)

欢迎使用Stack Overflow。您可以使用Regex删除非数字,使用concatenate功能删除部分Mid

例如:

Dim sTest
sTest = ",123.4567890"

With (New RegExp)
    .Global = True
    .Pattern = "\D" 'matches all non-digits
    sTest = .Replace(sTest, "") 'all non-digits removed
End With

WScript.Echo Mid(sTest, 1, 3) & " "& Mid(sTest, 4, 3) & " "& Mid(sTest, 7, 4)

或完全使用正则表达式(通过第二个分组模式):

Dim sTest
sTest = ",123.4567890"

With (New RegExp)
    .Global = True
    .Pattern = "\D" 'matches all non-digits
    sTest = .Replace(sTest, "") 'all non-digits removed
    .Pattern = "(.{3})(.{3})(.{4})" 'grouping
    sTest = .Replace(sTest, "$1 $2 $3") 'formatted 
End With

WScript.Echo sTest

答案 1 :(得分:1)

使用第一个RegEx清除输入中的非数字,第二个使用布局组:

Function cleanPhoneNumber( sSrc )
  Dim reDigit : Set reDigit = New RegExp
  reDigit.Global  = True
  reDigit.Pattern = "\D"
  Dim reStruct : Set reStruct = New RegExp
  reStruct.Pattern = "(.{3})(.{3})(.+)"
  cleanPhoneNumber = reStruct.Replace( reDigit.Replace( sSrc, "" ), "$1 $2 $3" )
End Function ' cleanPhoneNumber