Разобрать строку, используя разделитель новой строки, затем присвоить переменным - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь разобрать последовательный ввод в предложения, а затем назначить эти предложения переменной.Вот пример того, что я пытаюсь сделать.Мой последовательный порт в настоящее время выводит это:

This is the first sentence. 
This is the second sentence. 
This is the third sentence. 

Я прочитал это и распечатал с помощью:

scanner := bufio.NewScanner(port)
    for scanner.Scan() {
        fmt.Println(scanner.Text())
        }

Я хотел бы назначить каждое предложение новая переменная .Позже я хочу сделать что-то вроде этого (пример):

fmt.Printf("First sentence: %q\n", firstSen)
fmt.Printf("Second sentence: %q\n", secondSen)
fmt.Printf("Third sentence: %q\n", thirdSen)

И он должен вывести:

First sentence: This is the first sentence. 
Second sentence: This is the second sentence. 
Third sentence: This is the third sentence.

Как я могу это сделать?Спасибо.

1 Ответ

0 голосов
/ 01 июня 2018

Соберите строки из ввода:

var lines []string
scanner := bufio.NewScanner(port)
for scanner.Scan() {
    lines = append(lines, scanner.Text())
}
if err := scanner.Err(); err != nil {
    // handle error
}

Переберите переменные, присваивая строку переменной:

var firstSen, secondSen, thirdSen string
for i, s := range []*string{&firstSen, &secondSen, &thirdSen} {
    if i >= len(lines) {
        break
    }
    *s = lines[i]
}

Распечатайте, как показано в вопросе:

fmt.Printf("First sentence: %q\n", firstSen)
fmt.Printf("Second sentence: %q\n", secondSen)
fmt.Printf("Third sentence: %q\n", thirdSen)

В зависимости от ваших требований, вы можете удалить переменные и напрямую использовать фрагмент строки:

fmt.Printf("First sentence: %q\n", line[0])
fmt.Printf("Second sentence: %q\n", line[1])
fmt.Printf("Third sentence: %q\n", line[2])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...