"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que `reader.ReadString` não remove o delimitador inicial?

Por que `reader.ReadString` não remove o delimitador inicial?

Publicado em 2024-12-21
Navegar:191

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

reader.ReadString não remove o delimitador inicial

Em um esforço para criar um programa que cumprimente usuários chamados Alice ou Bob, um desenvolvedor encontrou um problema em que até nomes legítimos desencadeavam uma resposta indesejada. O programa negou incorretamente a entrada de Alice e Bob.

O problema

O problema decorre do uso de reader.ReadString('\n') no programa . Esta função recupera caracteres até que um caractere de nova linha seja encontrado. No entanto, ele não remove automaticamente o delimitador da string retornada, levando à inclusão de uma nova linha adicional na entrada do usuário.

Solução

Para resolver esse problema , existem duas abordagens possíveis:

1. Corte a nova linha

Use a função strings.TrimSpace para remover qualquer espaço em branco à esquerda ou à direita da string de entrada antes de avaliá-la. Isso remove efetivamente o caractere de nova linha que causou o problema.

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

2. Use ReadLine em vez de ReadString

Alternativamente, a função ReadLine pode ser usada em vez de ReadString. ReadLine recupera uma linha de texto sem incluir o caractere de nova linha na string retornada.

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

Explicação

O motivo para usar string(text) com ReadLine é que ReadLine retorna uma fatia de bytes, enquanto aliceOrBob requer um argumento de string.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3