VBSCRIPT REPLACE не удаляет пробелы из расшифрованных полей - PullRequest
2 голосов
/ 31 марта 2020

У меня довольно много проблем ...

Я использую функцию VBScript REPLACE, чтобы заменить пробелы в расшифрованном поле из базы данных MS SQL на "/".

Но функция REPLACE не «видит» пробелы.

Например, если я выполню любое из следующих действий, где расшифрованное значение поля "ITF_U_ClientName_Den c" равно "Джонни Карсон":

REPLACE(ITF_U_Ledger.Fields("ITF_U_ClientName_Denc")," ","/")
REPLACE(ITF_U_Ledger.Fields("ITF_U_ClientName_Denc")," ","/")
REPLACE(ITF_U_Ledger.Fields("ITF_U_ClientName_Denc"),"Chr(160)","/")
REPLACE(CSTR(ITF_U_Ledger.Fields("ITF_U_ClientName_Denc"))," ","/")
REPLACE(ITF_U_Ledger.Fields("ITF_U_ClientName_Denc")," ","/",1,-1,1)
REPLACE(ITF_U_Ledger.Fields("ITF_U_ClientName_Denc")," ","/",1,-1,0)

Возвращаемое значение равно «Джонни Карсон» (пробел не заменен на /)

Проблема, похоже, связана исключительно с пробелами, потому что, когда я запускаю это: REPLACE (ITF_U_Ledger.Fields ("ITF_U_ClientName_Den c"), "a", "/")

Я получаю "Johnny C / rson".

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

REPLACE("Johnny Carson"," ","/")

Конечно, возвращаемое значение - "Джонни / Карсон".

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

Я также попробовал функцию SPLIT, чтобы увидеть, будет ли она «видеть» пробел, но это не так.

Наконец, благодаря полезному комментарию, я попробовал VBS REGEX. поиск \ s.

Set regExp = New RegExp
regExp.IgnoreCase = True
regExp.Global = True
regExp.Pattern = "\s" 'Add here every character you don't consider as special character
strProcessed = regExp.Replace(ITF_U_Ledger.Fields("ITF_U_ClientName_Denc"), "?")

К сожалению, strProcessed перезапускает "Джонни Карсон" (ie. Пробелы не обнаружены / удалены).

Если я заменю regExp.Pattern = "a", strProcessed возвращает "Johnny" C? Rson ".

Большое спасибо за вашу помощь !!

1 Ответ

1 голос
/ 31 марта 2020

Как мы выяснили, правильный символьный код равен 160, и это помогло:

replace(..., ChrW(160), "...")

Это, кажется, указывает данные c и, кроме того, в качестве альтернативы вы можете попытаться получить та же кодировка исходного скрипта (т.е. сохранить с Сохранить как с кодировкой ) или преобразовать полученное значение базы данных в другую целевую кодировку.

...