Age: 40 Joined: 01 Feb 2008 Posts: 387 Location: Воронеж
Posted: Tue Apr 20, 2010 6:01 pm Post subject:
Если число произвольное, то наверное только перебором всех символов. _________________ Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Age: 46 Joined: 05 Nov 2007 Posts: 725 Location: КраснАдар
Posted: Wed Apr 21, 2010 9:49 am Post subject:
И еще вариант:
Code:
DATA: text1 TYPE string VALUE 'Тут был я (когда - 21 января)',
text2 TYPE string VALUE 'Тут был я (когда - 331 января)',
text3 TYPE string VALUE 'Тут был я (когда - 55 января)'.
DATA: text_tab TYPE TABLE OF string,
result_tab TYPE TABLE OF int2 WITH HEADER LINE.
FORM find_digits USING text TYPE string.
SPLIT text AT space INTO TABLE text_tab.
REPLACE ALL OCCURRENCES OF REGEX:
'[ [:punct:] ]' IN TABLE text_tab WITH '',
'[ [:alpha:] ]' IN TABLE text_tab WITH '',
'[ [:blank:] ]' IN TABLE text_tab WITH '',
'[ [:space:] ]' IN TABLE text_tab WITH ''.
DELETE text_tab WHERE table_line IS INITIAL.
APPEND LINES OF text_tab TO result_tab.
ENDFORM.
Age: 40 Joined: 01 Feb 2008 Posts: 387 Location: Воронеж
Posted: Wed Apr 21, 2010 11:33 am Post subject:
Мне конечно до гуру далеко. Когда говорил про перебор думал не только о целых...да и точка после числа в конце предложения... свое корявое детище тоже выложу
Code:
DATA: text1 TYPE string VALUE 'Тут был я (когда - 21. января)',
text2 TYPE string VALUE 'Тут был я (когда - 33,1 января)',
text3 TYPE string VALUE 'Тут был я (когда - 55.6 января)'.
DATA: text_tab TYPE TABLE OF string WITH HEADER LINE,
result_tab TYPE TABLE OF string WITH HEADER LINE.
START-OF-SELECTION.
PERFORM find_digits USING: text1, text2, text3.
LOOP AT result_tab.
WRITE / result_tab.
ENDLOOP.
FORM find_digits USING text TYPE string.
DATA: l_text(1000)
,l_temp(100)
,l_char(1)
,l_endsymbol type i.
SPLIT text AT space INTO TABLE text_tab.
LOOP AT text_tab.
CLEAR l_temp.
l_text = text_tab.
DO .
IF l_text(1) CO '1234567890,.'.
CONCATENATE l_temp l_text(1) INTO l_temp.
ELSEIF l_temp IS INITIAL. "не число
EXIT.
ELSEIF l_temp IS NOT INITIAL.
IF l_char CO '.,'. "Удалить последний символ.
l_endsymbol = strlen( l_temp ) - 1.
CLEAR: l_temp+l_endsymbol(1).
ENDIF.
APPEND l_temp TO result_tab.
EXIT.
ENDIF.
l_char = l_text(1).
SHIFT l_text BY 1 PLACES LEFT.
ENDDO.
ENDLOOP.
ENDFORM. "find_digits
_________________ Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Age: 40 Joined: 01 Feb 2008 Posts: 387 Location: Воронеж
Posted: Wed Apr 21, 2010 12:13 pm Post subject:
максимально уточните какой будет формат поданной строки.
если как сейчас "Тут был я 10 раз (когда - 21. января)", то нужно отбросить из строки поиска, все что находится вне скобок и повторить то что написано выше. Как слева убрать лишнюю подстроку то вы наверное знаете? (Если нет, читаем книжку для начинающих на русском языке "Разработка приложений SAP R3 на языке ABAP4" Рюдигер Кречмер или "Программиование на языке ABAP")
ЗЫ: или брать только второе число ))). _________________ Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Age: 40 Joined: 01 Feb 2008 Posts: 387 Location: Воронеж
Posted: Wed Apr 21, 2010 3:55 pm Post subject:
Code:
data: it_tab TYPE TABLE OF string
,wa_tab TYPE string.
loop at it_tab into wa_tab.
...
endloop.
Надеюсь понятно. Вы совсем с языком не знакомы . Прочитайте книжки, курсы... _________________ Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.