题解 | #参数解析#
参数解析
https://www.nowcoder.com/practice/668603dc307e4ef4bb07bcd0615ea677
package main import ( "fmt" "bufio" "os" ) func parseParams(cmd string) []string { var params []string left, right := 0, 0 var substr string for right < len(cmd) { if cmd[right] == '"' { right++ start := right for cmd[right] != '"' {right++} substr = cmd[start:right] params = append(params, substr) // 跳过 “ 和 空格 right += 2 left = right } else if cmd[right] == ' ' { substr = cmd[left:right] params = append(params, substr) right++ left = right } else { right++ } } return params } func main() { inputReader := bufio.NewReader(os.Stdin) line, _, _ := inputReader.ReadLine() cmd := string(line) // 在字符串最后加一个空格,避免处理最后一个的情况 cmd += " " params := parseParams(cmd) fmt.Println(len(params)) for _, param := range params { fmt.Println(param) } }
// 本题输入一个带空格的字符串,所以采用:inputReader.ReadLine()