首頁 >後端開發 >Golang >為什麼 `reader.ReadString` 不刪除初始分隔符號?

為什麼 `reader.ReadString` 不刪除初始分隔符號?

Patricia Arquette
Patricia Arquette原創
2024-12-24 05:31:14807瀏覽

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 傳回一個位元組切片,而 aliceOr 需要一個字串參數。

以上是為什麼 `reader.ReadString` 不刪除初始分隔符號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn