题解 | #参数解析#
参数解析
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()

查看17道真题和解析