题解 | #参数解析#
参数解析
https://www.nowcoder.com/practice/668603dc307e4ef4bb07bcd0615ea677
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextLine()) {
String commandString = in.nextLine();
char[] chars = commandString.toCharArray();
int length = chars.length;
boolean leftQuote = false;
int previousSpaceIndex = -1;
List<String> params = new ArrayList<>();
for (int i = 0; i < length; i++) {
char c = chars[i];
if (c == ' ' && !leftQuote) {
params.add(commandString.substring(previousSpaceIndex + 1, i));
previousSpaceIndex = i;
}
if (c == '"') {
if (!leftQuote) {
leftQuote = true;
} else {
leftQuote = false;
}
}
if (i == length - 1) {
params.add(commandString.substring(previousSpaceIndex + 1, length));
}
}
params = params.stream().map(param -> {
if (param.startsWith("\"") && param.endsWith("\"")) {
return param.substring(1, param.length() - 1);
}
return param;
}).collect(Collectors.toList());
System.out.println(params.size());
params.forEach(System.out::println);
}
in.close();
}
}

