fork download
  1. using System;
  2. using System.Text;
  3.  
  4. public class Test
  5. {
  6. public static void Main()
  7. {
  8. Console.WriteLine(ReplaceTopLevelCommas("select name,lastname,email from contacts"));
  9. Console.WriteLine(ReplaceTopLevelCommas("select name,lastname,isnull(email,0) from contacts"));
  10. Console.WriteLine(ReplaceTopLevelCommas("select name,lastname,isnull(email,something(a,b)) from contacts"));
  11. }
  12.  
  13. public static string ReplaceTopLevelCommas(string query)
  14. {
  15. var newQuery = new StringBuilder();
  16. var level = 0;
  17.  
  18. foreach (var c in query)
  19. {
  20. if (c == ',')
  21. {
  22. if (level == 0)
  23. {
  24. newQuery.Append("+\"|\"+");
  25. }
  26. else
  27. {
  28. newQuery.Append(c);
  29. }
  30. }
  31. else
  32. {
  33. if (c == '(')
  34. {
  35. level++;
  36. }
  37. else if (c == ')')
  38. {
  39. level--;
  40. }
  41.  
  42. newQuery.Append(c);
  43. }
  44. }
  45.  
  46. return newQuery.ToString();
  47. }
  48. }
Success #stdin #stdout 0.03s 23864KB
stdin
Standard input is empty
stdout
select name+"|"+lastname+"|"+email from contacts
select name+"|"+lastname+"|"+isnull(email,0) from contacts
select name+"|"+lastname+"|"+isnull(email,something(a,b)) from contacts