题目描述:输入一个字符串,以回车结束(字符串长度不超过 100)。
该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。
现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。
输入格式
输入共 3 行。
第 1 行是包含多个单词的字符串 s;
第 2 行是待替换的单词 a(长度不超过 100);
第 3 行是 a 将被替换的单词 b(长度不超过 100)。
输出格式
共一行,输出将 s 中所有单词 a 替换成 b 之后的字符串。
输入样例:
You want someone to help you You I输出样例:
I want someone to help you题解:
package main import ("fmt" "strings" "bufio" "os" ) func main(){ scanner:=bufio.NewScanner(os.Stdin) scanner.Scan() s:=scanner.Text() scanner.Scan() a:=scanner.Text() scanner.Scan() b:=scanner.Text() words:=strings.Split(s," ") for i:=range words{ if words[i]==a{ words[i]=b } } result := strings.Join(words, " ") fmt.Println(result) }1. 导入必要的包
go
运行
import ( "fmt" // 用于输入输出 "strings" // 用于字符串处理(拆分、拼接等) "bufio" // 用于读取带空格的完整输入 "os" // 提供标准输入(键盘)的访问 )2. 主函数(main)执行步骤
(1)创建输入扫描器
go
运行
scanner := bufio.NewScanner(os.Stdin)- 创建一个
scanner对象,用于读取键盘输入(支持读取带空格的完整行)。 bufio.Scanner:是 Go 标准库bufio包提供的 “输入扫描工具”,核心功能是按行读取输入(遇到回车就结束一行),还能处理带空格的字符串(这是fmt.Scan做不到的)。os.Stdin:是 Go 标准库os包提供的 “标准输入流”,代表键盘输入(简单说就是你在终端里敲的内容)。scanner := ...:短变量声明,创建一个名为scanner的变量,类型是bufio.Scanner,并把它和 “键盘输入” 绑定起来。
(2)读取三行输入
go
运行
// 读取第1行:原字符串 s(包含多个单词的句子) scanner.Scan() s := scanner.Text() // 读取第2行:待替换的单词 a scanner.Scan() a := scanner.Text() // 读取第3行:替换后的单词 b scanner.Scan() b := scanner.Text()scanner.Scan():读取一行输入(直到回车结束)。scanner.Text():获取读取到的字符串内容。
(3)拆分原字符串为单词切片
go
运行
words := strings.Split(s, " ")- 用
strings.Split按空格拆分原字符串s,得到一个单词切片(例如"You want help"拆分为["You", "want", "help"])。
(4)遍历切片,替换目标单词
go
运行
for i := range words { if words[i] == a { // 找到与待替换单词 a 匹配的单词 words[i] = b // 替换为单词 b } }- 循环遍历每个单词,若与
a完全一致(区分大小写),则替换为b。
(5)拼接单词并输出结果
go
运行
result := strings.Join(words, " ") // 用空格拼接替换后的单词切片 fmt.Println(result) // 输出最终结果举例验证(输入样例)
plaintext
输入第1行:You want someone to help you 输入第2行:You 输入第3行:I- 拆分后
words为["You", "want", "someone", "to", "help", "you"]。 - 替换后
words为["I", "want", "someone", "to", "help", "you"]。 - 拼接输出:
I want someone to help you(与样例输出一致)。