Метод bufio.Scanner.Text

Метод bufio.Scanner.Text возвращает текущий токен (например, слово или строку) в виде строки string. Метод вызывается после успешного выполнения метода Scan, который считывает данные из входного потока и возвращает true, если данные были успешно прочитаны. Если сканирование завершилось ошибкой или достигнут конец данных, метод Text возвращает пустую строку.

Синтаксис

goscanner.Text()

Пример

Давайте создадим сканер для строки и почитаем из нее слова:

gopackage main

import (
  "bufio"
  "fmt"
  "strings"
)

func main() {
  data := "abcde 12345"
  scanner := bufio.NewScanner(strings.NewReader(data))
  scanner.Split(bufio.ScanWords)

  for scanner.Scan() {
    token := scanner.Text()
    fmt.Println(token)
  }

  if err := scanner.Err(); err != nil {
    fmt.Println("Error:", err)
  }
}

Результат выполнения кода:

go"abcde"
"12345"

Пример

Давайте прочитаем строку по словам, используя стандартную функцию разбиения:

gopackage main

import (
  "bufio"
  "fmt"
  "strings"
)

func main() {
  data := "a b c d e"
  scanner := bufio.NewScanner(strings.NewReader(data))

  for scanner.Scan() {
    token := scanner.Text()
    fmt.Printf("Token: %s\n", token)
  }
}

Результат выполнения кода:

go"Token: a"
"Token: b"
"Token: c"
"Token: d"
"Token: e"

Пример

Давайте прочитаем строку по словам и подсчитаем их количество:

gopackage main

import (
  "bufio"
  "fmt"
  "strings"
)

func main() {
  data := "hello world from go"
  scanner := bufio.NewScanner(strings.NewReader(data))
  scanner.Split(bufio.ScanWords)

  count := 0
  for scanner.Scan() {
    count++
  }

  fmt.Printf("Word count: %d", count)
}

Результат выполнения кода:

go"Word count: 4"

Смотрите также

  • метод bufio.Scanner.Scan,
    который считывает следующий токен
  • метод bufio.Scanner.Bytes,
    который возвращает текущий токен как срез байт
  • метод bufio.Scanner.Split,
    который устанавливает функцию разбиения данных
  • метод bufio.Scanner.Err,
    который возвращает ошибку сканирования