”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 为什么 `reader.ReadString` 不删除初始分隔符?

为什么 `reader.ReadString` 不删除初始分隔符?

发布于2024-12-21
浏览:678

Why Doesn't `reader.ReadString` Remove the Initial Delimiter?

reader.ReadString 不会去掉初始分隔符

为了创建一个程序来迎接名为 Alice 或 Bob 的用户,开发人员遇到一个问题,即使是合法的名称也会引发不受欢迎的响应。程序错误地拒绝了 Alice 和 Bob 的进入。

问题

该问题源于程序中使用 reader.ReadString('\n') 。此函数检索字符,直到遇到换行符。但是,它不会自动从返回的字符串中删除分隔符,从而导致在用户输入中包含额外的换行符。

解决方案

解决此问题,有两种可能的方法:

1。修剪换行符

使用 strings.TrimSpace 函数在计算输入字符串之前删除所有前导或尾随空格。这有效地删除了导致问题的换行符。

if aliceOrBob(strings.TrimSpace(text)) {
    fmt.Printf("Hello, ", text)
}

2.使用 ReadLine 代替 ReadString

或者,可以使用 ReadLine 函数代替 ReadString。 ReadLine 检索一行文本,但在返回的字符串中不包含换行符。

text, _, _ := reader.ReadLine()
if aliceOrBob(string(text)) {
    fmt.Printf("Hello, ", text)
}

解释

将 string(text) 与 ReadLine 一起使用的原因是 ReadLine 返回一个字节切片,而 aliceOrBob 需要一个字符串参数。

最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3