Текущее время: Пт, апр 19 2024, 03:16

Часовой пояс: 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 часа


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

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


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

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