Как удалить символы из строки в VBscript - PullRequest
4 голосов
/ 22 сентября 2011

Я новичок в vbscript и переполнении стека, и мне действительно нужна помощь.

В настоящее время я пытаюсь отформатировать номер телефона, который считывается с изображения и сохраняется в переменной. Поскольку изображения «грязные», в них попадают дополнительные символы, такие как точки или скобки. Я уже ограничил поле настолько, насколько это возможно, чтобы не допустить сбора лишних символов, но, увы!

Например, я хочу превратить ", 123.4567890" в "123 456 7890" (не включая двойные кавычки). Проблема в том, что я не буду знать, какие дополнительные символы могут быть подобраны, исключая простую замену.

Моя логика - удалить любые нечисловые символы, начать слева, вставить пробел после третьего числа, вставить пробел после шестого числа.

Любая помощь будет отличной, и, пожалуйста, не стесняйтесь обращаться за дополнительной информацией, если это необходимо.

Ответы [ 2 ]

4 голосов
/ 22 сентября 2011

Добро пожаловать в переполнение стека.Вы можете удалить нецифровые символы, используя Regex и сцепление деталей, используя функцию 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)

Или полностью используя Regex (через второй шаблон группировки):

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 голос
/ 22 сентября 2011

Используйте первый RegExp для очистки нецифровых чисел от ввода и второй, используя группы для макета:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...