Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Система ИРБИС в целом :  ИРБИС Irbis
 
Обрезка строки от пробелов в начале и конце
Пользователь: Синяков Роман (IP-адрес скрыт)
Дата: 16, May, 2006 15:36

А есть ли какой-нибудь формат, который позволяет избавить строку от ошибочных начальных и конечных пробелов, типа функции trim?

Re: Обрезка строки от пробелов в начале и конце
Пользователь: Куделя (IP-адрес скрыт)
Дата: 17, May, 2006 04:12

Ну вот Александр Иосифович же анонсировал для 6.1 &uf(+9T...). Осталось только подождать месячишко-полтора

Re: Обрезка строки от пробелов в начале и конце
Пользователь: Синяков Роман (IP-адрес скрыт)
Дата: 17, May, 2006 16:09

Ну с помощью +9 uf я могу проверить только нет ли в подстроке другой подстроки с фиксированным количеством пробелов, и тогда да, а у меня может быть и один и два и 22 пробела....

Re: Обрезка строки от пробелов в начале и конце
Пользователь: Куделя (IP-адрес скрыт)
Дата: 18, May, 2006 04:58

А вам зачем точно? Людей отучать надо от неправомерного ввода пробелов. Напишите непреодолимый ФЛК для поля и пусть операторы исправляют сами - "по горячему"

Re: Обрезка строки от пробелов в начале и конце
Пользователь: Синяков Роман (IP-адрес скрыт)
Дата: 18, May, 2006 13:19

Ну на будущее еще можно что-нибудь придумать, а вот уже существующую базу бы подчистить от пробелов

Re: Обрезка строки от пробелов в начале и конце
Пользователь: Vladimir Kim (IP-адрес скрыт)
Дата: 02, June, 2006 13:33

Достаточно просто можно реализовать через +8 написать dll с функцией trim, а потом использовать примерно так:

&uf('+8tools,trim,'v610)

С уважением, Владимир
---------------------------
Инженер-программист НБ МИФИ

Re: Обрезка строки от пробелов в начале и конце
Пользователь: Карауш (IP-адрес скрыт)
Дата: 18, August, 2006 19:27

"Поковырял" немного вечеров новые возможности ИРБИС_6.1 и представляю "словосочетание", которое может использоваться для удаления конечных символов в полях. Основная "нагрузка" была с повторениями полей.

Итак, "словосочетание" команд ищет последний символ в поле 610 (каждом его повторении) и, если там есть последний пробел, то выдает поля без последнего пробела.
Может использоваться для поиска или глобальной корректировки.

(if v610<>'' then &uf('+1'), &uf('+1W100#',&uf('+90#',v610))
if &uf('+961*0.1#',&uf('Av610#'&uf('+1R100')))=' '
then &uf('+960*0.'f(rsum(&uf('+95',&uf('Av610#'&uf('+1R100'))),'-1'),1,0)'#',v610)
else v610
fi
fi/)

Если заменить строку v610 на что-то еще, то можно и другие поля смотреть ;)

В соответсвии с этим решением у меня появился вопрос к Константину Сбойчакову.
Почему в каких-то случаях этого выражения срабатывает команда &uf('+90#',v702^b), например:

(if v702^b<>'' then &uf('Av702^b*0.2#',&uf('+90#',v702^b)) fi /)

т.е. выдает номер текущего повторения, до второго "слоя" вложенности в &uf.
А далее, начиная с третьего уровня вложенности - уже не работает, например,

(if v702^b<>'' then &uf('+960*0.'f(rsum(&uf('+95',&uf('Av702^b#'&uf('+90#',v702^b))),'-1'),1,0)'#',&uf('Av702^b#'&uf('+90#',v702^b))) fi /)
???
Для обхода этого пришлось использовать глобальные переменные.

Re: Обрезка строки от пробелов в начале и конце
Пользователь: Карауш (IP-адрес скрыт)
Дата: 18, August, 2006 19:48

Сразу же прикладываю глобальную корректировку для "пробегания" по базе на поиск и "вычистку" оконечных пробелов для 610 поля. Может кому и пригодится?

0
REP
610
F
(if v610<>'' then &uf('+1'), &uf('+1W100#',&uf('+90#',v610)) if &uf('+961*0.1#',&uf('Av610#'&uf('+1R100')))=' ' then &uf('+960*0.'f(rsum(&uf('+95',&uf('Av610#'&uf('+1R100'))),'-1'),1,0)'#',v610) else v610 fi fi/)
XXXXXXXXXXXXXXXXXXX


Процесс корректировки для большой базы будет продолжительным, и, пожалуйста, потренируйтесь, прежде чем запускать эту корректировку на базу, чтобы ничего не покорежить в ответственных данных. (боюсь, что web может изменить символы при передаче через буфер обмена).



Извините, только зарегистрированные пользователи могут писать в этом форуме.
This forum powered by Phorum.