You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何改进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函数,仅修改输入来源为控制台读取。

使用方式

  1. 运行程序后,按提示输入目标多行数据(可直接粘贴你提供的ID列表)。
  2. 输入完成后按下对应系统的EOF快捷键,程序会立即输出处理后的结果。

内容的提问来源于stack exchange,提问作者mr.ercj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 18:43:22