LELUK написал(а):
То что задача во многих случаях не решаема - это очевидно.
Но если абстрагироваться и спуститься до уровня консультанта то:
1) Строка будет состоять из минимум 3 элементов - сл-но в строке будет как минимум 2 повторяющиеся под строки
2) Думаю разделительный элемент будет стандартный(; , или space)
3) Если нет то, будет отличаться по контексту.(Мы парсим не шифр, а понятную для консультанта строку)
По этому можно обработать большое кол-во частных вариантов, в ином случае выдавать сообщение об ошибке и тд.
Мне задача показалась интересной(своеобразное внедрение Иску. Интелекта в SAP
)
Если я правильно понимаю, то собственно вам уже все рассказал
__Gennady :
SPLIT dobj AT sep INTO { {result1 result2 ...} или {TABLE result_tab} }
где разделителем sep может быть не только один символ, но и любая строка, хоть 'Паду ли я, стрелой пронзенный,'.
Если же у вас в одной строке предполагается много различных разделителей ОДНОВРЕМЕННО, то вначале приведите их к одному посредством серии операций REPLACE. Этот один разделитель должен быть какой-нибудь заведомо не встречающейся - в тексте и разделителях - комбинацией символов, например, '-~|~-' или 'ЪЪЪ'.
Нужно будет грамотно задать порядок обработки разделителей для REPLACE, ориентируясь на их длину и содержание (более длинные, как правило, обрабатываются раньше, т.е. грубо говоря, чтобы строка '<<<<' была заменена раньше, чем '<<'). Если же разделители не пересекаются отдельными символами (например, просто состоят из одного символа), то это облегчает задачу - тогда порядок замены произволен.
После серии операций REPLACE делаете SPLIT во внутреннюю таблицу - и вуаля! Надеюсь, до искусственного интеллекта не дойдет. Максимум - может запахнуть регулярными выражениями. Но это в том случае, если разделители многосимвольные и критично пересекающиеся по отдельным символам.
Но может я, конечно, чего-то не понимаю... Разделители хоть известны заранее в каждом конкретном случае?