题目描述
在命令行输入如下命令:
xcopy /s c:\ d:\,
各个参数如下:
参数1:命令字xcopy
参数2:字符串/s
参数3:字符串c:\
参数4: 字符串d:\
请编写一个参数解析程序,实现将命令行各个参数解析出来。
解析规则:
1.参数分隔符为空格
2.对于用“”包含起来的参数,如果中间有空格,不能解析为多个参数。比如在命令行输入xcopy /s “C:\program files” “d:\”时,参数仍然是4个,第3个参数应该是字符串C:\program files,而不是C:\program,注意输出参数时,需要将“”去掉,引号不存在嵌套情况。
3.参数不定长
4.输入由用例保证,不会出现不符合要求的输入
输入描述:
输入一行字符串,可以有空格
输出描述:
输出参数个数,分解后的参数,每个参数都独占一行
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s;
while ((s = br.readLine()) != null) {
String str[] = s.split(" ");
ArrayList<String> ss = new ArrayList<>();
// int sum = 0;
String s1 = "";
String s2 = "";
// System.out.println(sum);
int temp = 0;
for (int i = 0; i < str.length; i++) {
if (temp == 0) {
if (str[i].charAt(0) != '“' && str[i].charAt(str[i].length() - 1) != '”') {
ss.add(str[i]);
// System.out.println(str[i]);
}
else if (str[i].charAt(0) == '“' && str[i].charAt(str[i].length() - 1) != '”') {
temp = 1;
str[i] = str[i].substring(1);
s1 = s1 + str[i] + s2;
} else if (str[i].charAt(0) == '“' && str[i].charAt(str[i].length() - 1) == '”') {
ss.add(str[i].substring(1, str[i].length() - 1));
// System.out.println(str[i].substring(1, str[i].length() - 1));
}
} else if (temp == 1) {
if (str[i].charAt(0) != '“' && str[i].charAt(str[i].length() - 1) != '”') {
s1 = s1 + " " + str[i] + s2;
} else if (str[i].charAt(0) != '“' && str[i].charAt(str[i].length() - 1) == '”') {
temp = 0;
ss.add(s1 + " " + str[i].substring(0, str[i].length() - 1));
// System.out.println(s1 + " " + str[i].substring(0, str[i].length() - 1));
}
}
}
System.out.println(ss.size());
for (int i = 0; i < ss.size(); i++) {
System.out.println(ss.get(i));
}
}
}
}