Текущее время: Пн, июл 28 2025, 21:04

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Обратный поиск в строке
СообщениеДобавлено: Ср, мар 31 2010, 17:01 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, авг 31 2004, 14:57
Сообщения: 5258
Откуда: Ростов невеликий
Пол: Мужской
нужна позиция последнего символа-образца в строке

p.s a то что-то совсем дурацкие идеи лезут типа "строку перевернуть, найти первый, а потом обратно и вычислить ;)

_________________
Нет сегодняшних проблем -
есть вчерашние ошибки
(с)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратный поиск в строке
СообщениеДобавлено: Ср, мар 31 2010, 17:08 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Вт, июн 09 2009, 15:25
Сообщения: 24
Откуда: Москва
Пол: Мужской
Code:
DATA: text TYPE string VALUE 'text',
      pos TYPE i.

pos = STRLEN( text ).


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Обратный поиск в строке
СообщениеДобавлено: Ср, мар 31 2010, 17:09 
Специалист
Специалист

Зарегистрирован:
Пт, окт 20 2006, 16:39
Сообщения: 230
Skif написал:
нужна позиция последнего символа-образца в строке

p.s a то что-то совсем дурацкие идеи лезут типа "строку перевернуть, найти первый, а потом обратно и вычислить ;)


может недопонял, но чем не подходит
Code:
FIND ALL OCCURRENCES OF   ... MATCH OFFSET
?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратный поиск в строке
СообщениеДобавлено: Ср, мар 31 2010, 17:10 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Наверное, оператор FIND с регулярным выражением?

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратный поиск в строке
СообщениеДобавлено: Чт, апр 01 2010, 06:04 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, авг 05 2008, 19:46
Сообщения: 96
Откуда: С Урала
Skif написал:
нужна позиция последнего символа-образца в строке

p.s a то что-то совсем дурацкие идеи лезут типа "строку перевернуть, найти первый, а потом обратно и вычислить ;)

А я вот так по простому ищу последний символ ( это поиск названия папки из полного имени файла)
Code:
      CLEAR foldlnam.
      flen = STRLEN( fl_name ) - 4 .
      DO flen TIMES.
        i = flen - sy-index.
        IF fl_name+i(1) = '\'.
          foldlnam = fl_name+0(i).
          EXIT.
        ENDIF.
      ENDDO.

Этот код копируется из программы в программу и искать что то другое просто лень...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратный поиск в строке
СообщениеДобавлено: Чт, апр 01 2010, 08:46 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, авг 31 2004, 14:57
Сообщения: 5258
Откуда: Ростов невеликий
Пол: Мужской
NickS написал(а):
Skif написал:
нужна позиция последнего символа-образца в строке

p.s a то что-то совсем дурацкие идеи лезут типа "строку перевернуть, найти первый, а потом обратно и вычислить ;)

А я вот так по простому ищу последний символ ( это поиск названия папки из полного имени файла)
Code:
      CLEAR foldlnam.
      flen = STRLEN( fl_name ) - 4 .
      DO flen TIMES.
        i = flen - sy-index.
        IF fl_name+i(1) = '\'.
          foldlnam = fl_name+0(i).
          EXIT.
        ENDIF.
      ENDDO.

Этот код копируется из программы в программу и искать что то другое просто лень...


да-да-да ;)
"cd .." надо отработать ;)
кстати действительно - выделение имени! обычная фича - встречал наверняка и даже недавно
в принципе можно split в табличку, выбросить последнюю запись и снова собрать..
погляжу FIND ещё..
========
find-ом тоже ничего...наверно самый короткий код будет

p.s. пасиб, народ ;)

_________________
Нет сегодняшних проблем -
есть вчерашние ошибки
(с)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратный поиск в строке
СообщениеДобавлено: Чт, апр 01 2010, 09:21 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
FIND в старой версии вернет "ннашел/не нашел".
А в новой версии, можно и без рег. выражений, так там просто будет offset и длина.

Code:
data: str type string value 'qwwee trytgr ertykl',
      tab type MATCH_RESULT_TAB.

find all OCCURRENCEs OF 't' in str results tab.


Если хочется сразу результат, то надо классы для рег. выражений использовать.

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратный поиск в строке
СообщениеДобавлено: Чт, апр 01 2010, 10:33 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Вот, если регэкспами искать (ищем букву 'b'):
Code:
REPORT  zloc_regexp.
DATA
: str TYPE string VALUE '388b34a999aa00b1'
, offs TYPE i
.

START-OF-SELECTION.
  WRITE:/ str.

  FIND REGEX 'b' IN str MATCH OFFSET offs.
  WRITE:/ 'Смещение первого вхождения', offs.

  FIND REGEX 'b[^b]*$' IN str MATCH OFFSET offs.
  WRITE:/ 'Смещение последнего вхождения', offs.

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB