Текущее время: Вт, апр 23 2024, 23:04

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Разбиение предложения по целым словам на строки заданной длины
СообщениеДобавлено: Вт, окт 25 2011, 11:12 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пт, окт 08 2010, 11:37
Сообщения: 322
Добрый день.

Нужно "правильное" предложение разбить по строкам заданной длинны, переносить можно только целые слова.
Начал определять номер самого дальнего пробела до максимальной длинны и тут напоролся на пробел в знаниях:

DATA: lv_str TYPE string VALUE 's e'
, lv_space TYPE string VALUE space
, lv_spac TYPE char1 VALUE space
, result_tab TYPE match_result_tab.


FIND FIRST OCCURRENCE OF lv_str+1(1) IN i_string RESULTS result_tab.

CLEAR result_tab.
FIND FIRST OCCURRENCE OF lv_space IN i_string RESULTS result_tab.
CLEAR result_tab.
FIND FIRST OCCURRENCE OF space IN i_string RESULTS result_tab.
CLEAR result_tab.
FIND FIRST OCCURRENCE OF lv_spac IN i_string RESULTS result_tab.

в первом случае выдает верный ответ, в остальных 0, хотя по идеи строки должны быть одинаковые.
Хочется уйти от кривизны, а в литературе по обработкам строк ищут что угодно но не пробелы(


Последний раз редактировалось LELUK Вт, окт 25 2011, 11:19, всего редактировалось 1 раз.

Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной глупый вопрос  Тема решена
СообщениеДобавлено: Вт, окт 25 2011, 11:18 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, авг 28 2006, 11:24
Сообщения: 292
Пол: Мужской
Посмотрите ФМ TEXT_SPLIT.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной глупый вопрос
СообщениеДобавлено: Вт, окт 25 2011, 11:34 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пт, окт 08 2010, 11:37
Сообщения: 322
Спасибо, ФМ то что нужно, но посмотрев как поиск пробела реализован там.... хардкодить легче и понятнее)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной глупый вопрос
СообщениеДобавлено: Вт, окт 25 2011, 11:57 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1246
Раз не подходит TEXT_SPLIT посмотрите RKD_WORD_WRAP.
Если не хочется использовать чужой ФМ: используйте регулярные выражения в FIND или классы регулярных выражения CL_ABAP_REGEX и CL_ABAP_MATCHER.

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной глупый вопрос
СообщениеДобавлено: Вт, окт 25 2011, 12:08 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пт, окт 08 2010, 11:37
Сообщения: 322
ФМ вполне подходит, просто для того чтобы определить пробел выбирается между 1 строкой хард кода и 100 строками кода фм )


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной глупый вопрос
СообщениеДобавлено: Вт, окт 25 2011, 12:26 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, авг 28 2006, 11:24
Сообщения: 292
Пол: Мужской
LELUK написал(а):
ФМ вполне подходит, просто для того чтобы определить пробел выбирается между 1 строкой хард кода и 100 строками кода фм )


Дались вам эти пробелы)
Если решать в лоб, я бы разбил текст на слова (split at space..), а потом уже из этих строк составил строки нужной длины.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной глупый вопрос
СообщениеДобавлено: Чт, окт 27 2011, 10:54 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 02:02
Сообщения: 188
Откуда: Мирный -> Москва
Пол: Мужской
Да, еще есть
ФМ SWA_STRING_SPLIT, очень удобен и задать длину строки можно всегда.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной глупый вопрос
СообщениеДобавлено: Чт, окт 27 2011, 10:57 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пт, окт 08 2010, 11:37
Сообщения: 322
Решений много и большинство из них подходит, но меня интересует разве ни как кроме хард кода нельзя задать пробел....


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной глупый вопрос
СообщениеДобавлено: Чт, окт 27 2011, 11:50 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, ноя 18 2008, 10:40
Сообщения: 342
Откуда: Пермь
Пол: Мужской
ФМ FORMAT_TEXTLINES (есть ограничение на длину строки в 132 символа)
Если система новая, пробел можно задать использую другие апострофы - ` `. В 4.6 нужно определить переменную типа string и присвоить ей пробел.
ps. Красиво разбить текст на строки - не такая тривиальная задача как может показаться сначала


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной глупый вопрос
СообщениеДобавлено: Чт, окт 27 2011, 12:09 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пт, окт 08 2010, 11:37
Сообщения: 322
То есть вы хотите сказать что я не изобретаю велосипед, а делаю полезный фм)

П.С. самооценка и настроение повысилось :D


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной глупый вопрос
СообщениеДобавлено: Чт, окт 27 2011, 12:15 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, ноя 18 2008, 10:40
Сообщения: 342
Откуда: Пермь
Пол: Мужской
Велосипед конечно! Лучше возьмите готовый ФМ, которых тут уже немало понаписали


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной глупый вопрос
СообщениеДобавлено: Чт, окт 27 2011, 12:20 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пт, окт 08 2010, 11:37
Сообщения: 322
Задачу я уже реализовал, но вот задумался если ФМ который русский текст разбивает на строки наиболее компактно:
1) Удаляет лишние пробелы
2) Переносит не по словам, а использует "-"

Давно хотелось сделать доброе людям, но получаются одни двух колесные


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной глупый вопрос
СообщениеДобавлено: Чт, окт 27 2011, 12:35 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, ноя 18 2008, 10:40
Сообщения: 342
Откуда: Пермь
Пол: Мужской
тогда вопрос на засыпку :) допустим надо получить строки длиной не больше 8 символов. как ваш ФМ разобьет такой текст
а ббббббббб вв


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной глупый вопрос
СообщениеДобавлено: Чт, окт 27 2011, 12:54 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пт, окт 08 2010, 11:37
Сообщения: 322
Специально на этот вопрос я в 1 посте введен термин "правильное предложение" :D


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной глупый вопрос
СообщениеДобавлено: Чт, окт 27 2011, 13:01 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, ноя 18 2008, 10:40
Сообщения: 342
Откуда: Пермь
Пол: Мужской
Т.е. вы хотите написать ФМ, который правильные предложения будет разбивать а на неправильных валиться в дамп? :)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу 1, 2  След.

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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