/// <summary> /// Splits a segment line into composite data elements /// </summary> /// <param name="ediSegment">The segment line</param> /// <param name="interchangeContext">The interchange context containing the separators</param> /// <returns>The collection of composite data elements</returns> public static string[] GetEdiCompositeDataElements(string ediSegment, InterchangeContext interchangeContext) { if (string.IsNullOrEmpty(ediSegment)) { throw new ArgumentNullException("ediSegment"); } if (interchangeContext == null) { throw new ArgumentNullException("interchangeContext"); } // Handle escapes // Retains blank lines var result = !string.IsNullOrEmpty(interchangeContext.ReleaseIndicator) ? ediSegment.EscapeSplit(interchangeContext.ReleaseIndicator[0], interchangeContext.DataElementSeparator[0], StringSplitOptions.None) : ediSegment.Split(interchangeContext.DataElementSeparator.ToCharArray(), StringSplitOptions.None); // Skip the segment name return(result.Skip(1).ToArray()); }