GNU Info

Info Node: (gawk.info)Join Function

(gawk.info)Join Function


Next: Gettimeofday Function Prev: Ordinal Functions Up: General Functions
Enter node , (file) or (file)node

Merging an Array into a String
------------------------------

   When doing string processing, it is often useful to be able to join
all the strings in an array into one long string.  The following
function, `join', accomplishes this task.  It is used later in several
of the application programs (Note: Practical `awk' Programs.
).

   Good function design is important; this function needs to be general
but it should also have a reasonable default behavior.  It is called
with an array as well as the beginning and ending indices of the
elements in the array to be merged.  This assumes that the array
indices are numeric--a reasonable assumption since the array was likely
created with `split' (Note: String Manipulation Functions.
):

     # join.awk --- join an array into a string
     function join(array, start, end, sep,    result, i)
     {
         if (sep == "")
            sep = " "
         else if (sep == SUBSEP) # magic value
            sep = ""
         result = array[start]
         for (i = start + 1; i <= end; i++)
             result = result sep array[i]
         return result
     }

   An optional additional argument is the separator to use when joining
the strings back together.  If the caller supplies a non-empty value,
`join' uses it; if it is not supplied, it has a null value.  In this
case, `join' uses a single blank as a default separator for the
strings.  If the value is equal to `SUBSEP', then `join' joins the
strings with no separator between them.  `SUBSEP' serves as a "magic"
value to indicate that there should be no separation between the
component strings.(1)

   ---------- Footnotes ----------

   (1) It would be nice if `awk' had an assignment operator for
concatenation.  The lack of an explicit operator for concatenation
makes string operations more difficult than they really need to be.


automatically generated by info2www version 1.2.2.9