/// <summary>
        /// Split a string into seperate string not bigger than a specified size
        /// </summary>
        /// <param name="str">string to split</param>
        /// <param name="maxsize">maximum string size</param>
        /// <param name="opt">split options</param>
        /// <returns>array of strings</returns>
        public static string[] SplitOnSize(string str, int maxsize, SplitOnSizeOptions opt)
        {
            List <string>      strs    = new List <string>();
            SplitOnSizeOptions options = opt;

            while (str.Length > maxsize)
            {
                int ls = maxsize;

                // note cannot use HasFlag because HasFlag is for .NET framework >= 4.0
                if ((options & SplitOnSizeOptions.WholeWords) != 0)
                {
                    if (ls < (str.Length - 1))
                    {
                        if (str[ls] != ' ')
                        {
                            ls++;
                        }
                    }
                }
                string temp = str.Substring(0, ls);
                str = str.Substring(ls);
                strs.Add(temp);
            }

            if (str.Length != 0)
            {
                strs.Add(str);
            }
            return(strs.ToArray());
        }
 /// <summary>
 /// string extension: Split a string into seperate string not bigger than a specified size
 /// </summary>
 /// <param name="str">string to split</param>
 /// <param name="maxsize">maximum string size</param>
 /// <param name="opt">split options</param>
 /// <returns>array of strings</returns>
 public static string[] SplitOnSize(this string str, int maxsize, SplitOnSizeOptions opt)
 {
     return(StringUtils.SplitOnSize(str, maxsize, opt));
 }