首页 > 后端开发 > Golang > 为什么 `reader.ReadString` 不删除初始分隔符?

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

Patricia Arquette
发布: 2024-12-24 05:31:14
原创
839 人浏览过

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)
}
登录后复制

说明

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

以上是为什么 `reader.ReadString` 不删除初始分隔符?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板