!
Привет всем. Я новичок в EDI X12. У меня есть задача прочитать 6-е поле сегмента GS (GS06), подчеркнутое красным на изображении выше. Пожалуйста, помогите мне, как написать код на С#, чтобы получить это значение GS06.
!
Привет всем. Я новичок в EDI X12. У меня есть задача прочитать 6-е поле сегмента GS (GS06), подчеркнутое красным на изображении выше. Пожалуйста, помогите мне, как написать код на С#, чтобы получить это значение GS06.
Во-первых, вам нужен полный документ в памяти. Затем, прочитав символ 106, вы получите разделитель сегментов. Также возьмите символ 4 для разделителя полей. Вызовите Splitstring на основе разделителя сегментов, и вы получите массив сегментов.
Как правило, GS должен быть вторым сегментом, поэтому array[1] (или, как указывает Эндрю, вы можете специально проверить сегмент, который начинается с «GS» и fieldDelim и «OG»). Снова разделите строку на основе вашего разделителя полей, а secondArray[5] — это ваш GS06.
Для начала вам нужно найти разделитель элементов. В вашем примере это звездочка. Ограничитель вашего сегмента — тильда.
Сегмент ISA имеет фиксированную длину. Остальные сегменты имеют переменную длину. Чтобы ваш синтаксический анализатор нашел определенный элемент, вы должны прочитать текстовый файл и проанализировать сегменты на основе признака конца сегмента. После этого вы можете найти искомый сегмент, вычислить количество разделителей элементов и получить найденное значение.
В вашем примере строка GSOG будет постоянной. Таким образом, вы можете читать текстовый файл, и когда вы сталкиваетесь с ~GSOG, вы знаете, что находитесь в правильном месте. Используйте свои знания о разделителях, чтобы добраться туда, где вам нужно быть в строке.
Или воспользуйтесь коммерческим переводчиком, который предоставит вам больше возможностей отображения.
Сначала поместите каждую строку в массив (вы можете разделить знак «~»), чтобы вторая строка была сегментом GS. Затем снова разделите сегмент GS на массив (вы можете разделить с помощью «*»). Массив сегментов GS будет GS06. Попробуйте это. Точно так же вы можете получить любое значение.