using System; public class Test { public static void Main() { string str = "fnGetDate('d',-1+ cint(cbool(DatePart('w',Date())<=2)) + cint(cbool(DatePart('w',Date())=2)))"; int parLevel = 0; List arguments = new List(); string currentString = String.Empty; foreach (char t in str) { switch (t) { case '(': if (t == '(') parLevel++; break; case ')': if (t == ')') parLevel--; break; case ',': if (parLevel > 1) continue; arguments.Add(currentString); currentString = String.Empty; break; default: if (parLevel == 0) continue; currentString += t; break; } } if (!String.IsNullOrEmpty(currentString)) arguments.Add(currentString); for (int i = 0; i < arguments.Count; i++) Console.WriteLine("Argument {0}: {1}", i, arguments[i]); } }