2016-04-04 6 views
3

ABC + 123: xy + 123 ++ 23'EFG + 123: xy + 123 ++ 23'GHI + 123: xy + 123 ++ 23 + mki + 123'LMV ++ 123: xy 'Как обрезать строку на основе определенных критериев в процессе открытия 4g?

У меня выше строки. Апостроф (') действует как терминатор, который обозначает конец сегментов. Следовательно, ABC + 123: xy + 123 ++ 23 - это сегмент, его стартовый тег - три символа ABC, который является уникальным. Теперь мне нужно обрезать эту строку на основе этих стартовых тегов, например, мне нужны сегменты, начинающиеся только с ABC и LMV. Результирующая строка должна быть ABC + 123: xy + 123 ++ 23'LMV ++ 123: xy '

ответ

3

На основании этого вопроса и ваших других вопросов вы работаете с EDIFACT.

EDIFACT разделен одиночной цитатой "(или апострофа, если вы это сделаете).

ENTRY и NUM-ENTRIES - твой друг. Я бы предложил переместить ваши данные в более удобный формат, чем строка, точнее временную таблицу. Затем вы можете делать все, что хотите, с помощью temp-table. Сначала обрабатывайте данные «по строкам» или, скорее, «запись по записи», а затем переходите к тому, что вы хотите с ней.

DEFINE VARIABLE cString AS CHARACTER NO-UNDO. 
DEFINE VARIABLE iEntry AS INTEGER  NO-UNDO. 

DEFINE TEMP-TABLE ttEdifact NO-UNDO 
    FIELD lineno AS INTEGER 
    FIELD linedata AS CHARACTER FORMAT "x(60)". 

/* The string in your example ends with a delimiter (') thus your temp-table will have one empty record in the end - it could be trimmed away */ 
cString = "ABC+123:xy+123++23'EFG+123:xy+123++23'GHI+123:xy+123++23+mki+123'LMV++123:xy'". 


DO iEntry = 1 TO NUM-ENTRIES(cString, "'"). 
    CREATE ttEdiFact. 
    ASSIGN 
     ttEdifact.lineno = iEntry 
     ttEdifact.lineData = ENTRY(iEntry, cString, "'"). 
END. 

/* Now it's up to you to do something */ 
FOR EACH ttEdifact WHERE ttEdifact.lineData BEGINS "ABC": 
    DISP ttEdiFact. 
END. 
+0

Да, я работаю с edifact, так или иначе способным извлекать то, что каждый элемент говорит, все еще борясь за получение точной информации. Мне нужно, этот вопрос заключается в фильтрации тегов сегмента перед синтаксическим разбором. Благодарю . – mac100

+0

BTW, если вы раньше работали в edifact и имели некоторую рабочую библиотеку, это можно мне помочь, спасибо – mac100

+0

@ mac100 Мы перестали работать с EDIFACT около 10 лет назад, поэтому я не думаю, что у нас есть что-то полезное. , – Jensd

 Смежные вопросы

  • Нет связанных вопросов^_^