如何改进Go数据处理代码,实现控制台输入数据功能?
Go语言实现控制台多行输入并处理字符串的解决方案
核心思路是使用bufio.Scanner读取控制台多行输入,拼接成完整字符串后传入原有处理函数,以下是完整可运行代码:
package main import ( "bufio" "fmt" "os" "strings" ) func removelinebreaks(input string) string { // 移除所有{ step1 := strings.ReplaceAll(input, "{", "") // 移除所有} step2 := strings.ReplaceAll(step1, "}", "") // 删除所有换行符 result := strings.ReplaceAll(step2, "\n", "") return result } func main() { fmt.Println("请输入需要处理的多行数据(输入完成后按Ctrl+D(Linux/macOS)或Ctrl+Z(Windows)结束输入):") scanner := bufio.NewScanner(os.Stdin) var inputBuilder strings.Builder // 逐行读取输入,直到触发EOF或读取错误 for scanner.Scan() { line := scanner.Text() // 可选:若需用空行结束输入,取消下方注释 // if line == "" { // break // } inputBuilder.WriteString(line + "\n") // 保留原换行符,让处理函数统一处理 } // 捕获读取过程中的异常 if err := scanner.Err(); err != nil { fmt.Fprintf(os.Stderr, "读取输入失败:%v\n", err) os.Exit(1) } // 传入处理函数并输出结果 inputStr := inputBuilder.String() processedResult := removelinebreaks(inputStr) fmt.Println("\n处理结果:") fmt.Println(processedResult) }
关键说明
- 多行输入读取:通过
bufio.Scanner循环读取每行输入,直到用户触发EOF快捷键;也可启用空行结束的逻辑(注释部分)。 - 高效字符串拼接:使用
strings.Builder避免频繁字符串拼接的性能损耗,同时保留输入的换行符,确保原有处理逻辑能正确识别并删除。 - 原有逻辑复用:完全保留你实现的
removelinebreaks函数,仅修改输入来源为控制台读取。
使用方式
- 运行程序后,按提示输入目标多行数据(可直接粘贴你提供的ID列表)。
- 输入完成后按下对应系统的EOF快捷键,程序会立即输出处理后的结果。
内容的提问来源于stack exchange,提问作者mr.ercj
相关产品推荐
相关产品推荐

