Функция vbscript для очистки строки допускает только определенные символы - PullRequest
2 голосов
/ 15 июля 2011

До сих пор я вручную добавлял символы, которые заменяли мой код. Я хотел бы быть немного более активным, поэтому я нашел эту функцию, которая должна заменить все, кроме допустимых символов. Мое первое препятствие - это то, что это не работает. Код ниже - это мой полный тестовый файл, и MsgBox отображается пустым.

Мой второй вопрос касается производительности. Эта функция обрабатывает очень и очень большие строки. Будет ли этот метод значительно медленнее? Кто-нибудь порекомендует что-нибудь еще?

    Function CleanUp (input)
      Dim objRegExp, outputStr
      Set objRegExp = New Regexp

      objRegExp.IgnoreCase = True
      objRegExp.Global = True
      objRegExp.Pattern = "((?![a-zA-Z0-9]).)+"
      outputStr = objRegExp.Replace(input, "-")

      objRegExp.Pattern = "\-+"
      outputStr = objRegExp.Replace(outputStr, "-")

      CleanUp = outputStr
    End Function

    MsgBox (CleanUp("Test"))

Редактировать: я тупой и только что увидел, как я перепутал переменную, из-за чего она ничего не возвращала. Это работает сейчас. Будет по-прежнему принимать входные данные для вопроса о производительности или лучшие предложения.

Ответы [ 2 ]

2 голосов
/ 16 июля 2011

Вы можете упростить это еще больше.

objRegExp.Pattern = "[^ \ w +]"

2 голосов
/ 15 июля 2011

Не знаю, каков ожидаемый результат для вашего примера, но, возможно, вы можете попробовать это вместо шаблона:

objRegExp.Pattern = "[^ a-zA-Z0-9]"

Надеюсь, что это работает

...