RegExp или как реализовать Алгоритм очистки строки от мусора

Здесь обсуждаем систему TDM/PDM/Workflow Lotsia PDM PLUS (PartY PLUS).
Ответить
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

RegExp или как реализовать Алгоритм очистки строки от мусора

Сообщение Александр »

не подскажите как в действии реализовать быстрый алгоритм очистки вставленной в строковое поле строки от ненужных символов

например юзер вставил строку
"Производственно-техническая компания *ПТК* <АСПЕКТ>"
нужно по шаблону
'<>()*".,$#@'
очистить строку от этих символов
возможно используя из действия инструменты SQL (применив SQL только как средство вычисления типа Select 1+2) без запроса как такового (к таблицам)

может кто уже реализовал или есть какие соображения?

можно конечно в действии на двух шагах зациклить и сдвигая шаблон вырезать из строки все что надо
но наверняка есть более красивое решение???

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Юрий
Активный участник
Сообщения: 239
Зарегистрирован: 13 янв 2005, 14:30
Используемое ПО: Lotsia PDM PLUS LT
Откуда: Украина, Донецк
Контактная информация:

Сообщение Юрий »

В 4.20 Сборка 071008 появилась замечательная функция f_GlobalReplace(source,old,new,ignorecase)
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

да появилась, круто , но один символ, а хотелось бы всю мощь регулярных выражений, я уже на sql что-то присмотрел - смысл в вызове RegExp'a VBScript через WHS средствами SQL - конечно выглядит кривовато... но когда еще Лоция прилепит скрипты к действиям,а так уже можно работать :wink:
я вообще все больше склоняюсь к тому чтобы все вычисления проводить на стороне самого SQL т.к. представленный Лоцией интерпритатор - во многих элементарных случаях (работа с битами и т.д.) уже не спасает :wink:
ну это мое личное мнение :wink: :wink:

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Re: RegExp или как реализовать Алгоритм очистки строки от мусора

Сообщение Александр »

вопрос решили шагом типа скрипт

Код: Выделить всё

Sub ClearString
    LsVars.SetVarValue "tmp", cStr(RIC_Function.ClearCopyPaste(LsVars.GetVarValue("tmp")))
end sub
который обращается к модулю с нашими функциями где

Код: Выделить всё

...
'-----------------------Очистить строку от всех лишних символов операции Copy/Paste-------------------------
Function ClearCopyPaste(Desc)
 Dim RegExp
   'тест 
   'Desc = "      " & Chr(34) & "a,.{s.   d]f\g'a/  ё-2s" & vbTab & "d(f)7 8a" & vbCr & "sdf" & Chr(34) & "adf                "

 Set RegExp = CreateObject("VBScript.RegExp")
   With RegExp
     .IgnoreCase = True
     .Global = True
'убить пробелы >2
     .Pattern = "[\s]{2,}"
      Desc = .Replace(Trim(Desc), " ")
'убить все лишнее (вначале и в конце удалить ' и " в середине оставить буквы и цифры + одинарный пробел +'+"+(+)+-)
     .Pattern = "(^[\x22\x27]{1,})|([^a-zA-Zа-яА-ЯЁё\d\x20\x22\x27()-«»])|([\x22\x27]{1,}$)"
      Desc = .Replace(Desc, "")
   End With
   Set RegExp = Nothing
   ClearCopyPaste=Desc
End Function
...
можно и в mssql напрямую... но неохота :wink:
и паттерн наверно можно красивей оформить - но не знаю как :wink:

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Ответить