题解 | #参数解析#
参数解析
https://www.nowcoder.com/practice/668603dc307e4ef4bb07bcd0615ea677
方法1:先后用引号和空格分割字符串得到字符串数组,引号不存在嵌套情况的情况,故使用引号对字符串分割后,下标为奇数的元素必定为引号内的;下标为偶数的元素必定不是引号内的,可再次用空格进行分割
方法2:遍历字符串,根据当前字符串是否为引号和空格以判断是否为完整的参数
import java.util.*; //方法1:先后用/和"分割字符串得到字符串数组 public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String[] s = sc.nextLine().trim().split("\""); ArrayList<String> list = new ArrayList<>(); for (int i = 0; i < s.length; i++) { if (i % 2 == 1) { list.add(s[i]); } else { String[] ss = s[i].trim().split("[ ]+"); for (String str : ss) { list.add(str); } } } System.out.println(list.size()); for (String str : list) { System.out.println(str); } } } //方法2:遍历字符串 // public class Main { // public static void main(String[] args) { // Scanner sc = new Scanner(System.in); // String line = sc.nextLine(); // ArrayList<String> list = new ArrayList<>(); // StringBuilder sb = new StringBuilder(); // boolean flag = false; // String s = ""; // for (int i = 0; i < line.length(); i++) { // char c = line.charAt(i); // if (!flag) { // if (Character.isWhitespace(c)) { // s = sb.toString(); // if (!"".equals(s)) { // list.add(s); // } // sb = new StringBuilder(); // } else if ( c == '"') { // flag = true; // } else { // sb.append(c); // } // } else { // if (Character.isWhitespace(c)) { // sb.append(c); // } else if ( c == '"') { // s = sb.toString(); // if (!"".equals(s)) { // list.add(s); // } // sb = new StringBuilder(); // flag = false; // } else { // sb.append(c); // } // } // } // s = sb.toString(); // if (!"".equals(s)) { // list.add(s); // } // System.out.println(list.size()); // for (String str : list) { // System.out.println(str); // } // } // }