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中文网其他相关文章!