1. 程式人生 > >【華為機試074】引數解析

【華為機試074】引數解析

題目描述:

在命令列輸入如下命令:

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.輸入由用例保證,不會出現不符合要求的輸入 

Java實現:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        StringBuffer sb = new StringBuffer();
        int len = 0;
        int quotaNum = 0;
        for (int i = 0; i < str.length(); i++){
            if (str.charAt(i) == '\"'){ quotaNum++; continue;
            }
            if (str.charAt(i) != ' '){
                sb.append(str.charAt(i));
            } else if (quotaNum % 2 == 0){ sb.append('\n');
                len++;
            }else {
                sb.append(' ');
            }
        }
        System.out.println(len+1);
        System.out.println(sb.toString());
 
    }
}

知識點:

  • ''需要轉義為\''
  • 用一個變數持續統計''的數量,如果遇到了空格,且為偶數,則需要換行;如果不為偶數,說明是一個字串內的空格,需要新增進去