StringUtility.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. // ByteFX.Data data access components for .Net
  2. // Copyright (C) 2002-2003 ByteFX, Inc.
  3. //
  4. // This library is free software; you can redistribute it and/or
  5. // modify it under the terms of the GNU Lesser General Public
  6. // License as published by the Free Software Foundation; either
  7. // version 2.1 of the License, or (at your option) any later version.
  8. //
  9. // This library is distributed in the hope that it will be useful,
  10. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12. // Lesser General Public License for more details.
  13. //
  14. // You should have received a copy of the GNU Lesser General Public
  15. // License along with this library; if not, write to the Free Software
  16. // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  17. using System;
  18. using System.Text;
  19. using System.Collections;
  20. using System.Collections.Specialized;
  21. namespace ByteFX.Data.Common
  22. {
  23. /// <summary>
  24. /// Summary description for StringUtility.
  25. /// </summary>
  26. public class StringUtility
  27. {
  28. public StringUtility()
  29. {
  30. }
  31. public static string[] Split( string src, char delimiter, params char[] quotedelims )
  32. {
  33. ArrayList strings = new ArrayList();
  34. StringBuilder sb = new StringBuilder();
  35. ArrayList ar = new ArrayList(quotedelims);
  36. char quote_open = Char.MinValue;
  37. foreach (char c in src)
  38. {
  39. if (c == delimiter && quote_open == Char.MinValue)
  40. {
  41. strings.Add( sb.ToString() );
  42. sb.Remove( 0, sb.Length );
  43. }
  44. else if (ar.Contains(c))
  45. {
  46. if (quote_open == Char.MinValue)
  47. quote_open = c;
  48. else if (quote_open == c)
  49. quote_open = Char.MinValue;
  50. sb.Append(c);
  51. }
  52. else
  53. sb.Append( c );
  54. }
  55. if (sb.Length > 0)
  56. strings.Add( sb.ToString());
  57. return (string[])strings.ToArray(typeof(string));
  58. }
  59. }
  60. }