fork download
  1. /* package whatever; */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. class ArgumentsParser
  8. {
  9. final static String DELIMITER = ",";
  10. final static String PARENTHESES_START = "(";
  11. final static String PARENTHESES_END = ")";
  12.  
  13. public static List<String> parseArguments(String text) {
  14. List<String> arguments = new ArrayList<>();
  15. StringBuilder argParsed = new StringBuilder();
  16.  
  17. StringTokenizer st = new StringTokenizer(text, DELIMITER);
  18. while (st.hasMoreElements()) {
  19. String token = st.nextToken();
  20. System.out.println("Token: " + token);
  21. argParsed.append(token);
  22. if (token.contains(PARENTHESES_START)) {
  23. System.out.println("Nested expression with ( starting: " + token);
  24. while(st.hasMoreElements() && !token.contains(PARENTHESES_END)) {
  25. token=st.nextToken();
  26. System.out.println("Token inside nested expression: " + token);
  27. argParsed.append(DELIMITER);
  28. argParsed.append(token);
  29. }
  30. System.out.println("Nested expression with ) ending: " + token);
  31. }
  32. arguments.add(argParsed.toString());
  33. argParsed.setLength(0);
  34. }
  35.  
  36. return arguments;
  37. }
  38.  
  39. public static void main (String[] args) throws java.lang.Exception {
  40.  
  41. String textInside = "date1, calculatedDate(currentDate, 35), false, (a+b), x.toString()";
  42.  
  43. System.out.println("Arguments found: " + parseArguments(textInside));
  44. }
  45. }
Success #stdin #stdout 0.09s 35804KB
stdin
Standard input is empty
stdout
Token: date1
Token:  calculatedDate(currentDate
Nested expression with ( starting:  calculatedDate(currentDate
Token inside nested expression:  35)
Nested expression with ) ending:  35)
Token:  false
Token:  (a+b)
Nested expression with ( starting:  (a+b)
Nested expression with ) ending:  (a+b)
Token:  x.toString()
Nested expression with ( starting:  x.toString()
Nested expression with ) ending:  x.toString()
Arguments found: [date1,  calculatedDate(currentDate, 35),  false,  (a+b),  x.toString()]