Функция bufio.ScanWords
Функция bufio.ScanWords представляет собой функцию разделения (split function) для использования с bufio.Scanner. Она определяет правило разбиения входного потока данных на отдельные слова. В качестве первого параметра функция принимает срез байт (данные), а возвращает количество байт, которое нужно считать, токен (слово) в виде среза байт и флаг, указывающий, закончились ли данные. В отличие от других функций разделения, bufio.ScanWords разбивает текст на слова, игнорируя пробелы и другие разделители.
Синтаксис
bufio.ScanWords(data []byte, atEOF bool) (advance int, token []byte, err error)
Пример
Давайте разобьем строку на отдельные слова с использованием bufio.ScanWords:
package main
import (
"bufio"
"fmt"
"strings"
)
func main() {
input := "The quick brown fox jumps over the lazy dog"
scanner := bufio.NewScanner(strings.NewReader(input))
scanner.Split(bufio.ScanWords)
var words []string
for scanner.Scan() {
words = append(words, scanner.Text())
}
res := words
fmt.Println(res)
}
Результат выполнения кода:
[The quick brown fox jumps over the lazy dog]
Пример
Давайте подсчитаем количество слов в тексте, используя bufio.ScanWords:
package main
import (
"bufio"
"fmt"
"strings"
)
func main() {
input := "Go is an open source programming language"
scanner := bufio.NewScanner(strings.NewReader(input))
scanner.Split(bufio.ScanWords)
var count int
for scanner.Scan() {
count++
}
res := fmt.Sprintf("Word count: %d", count)
fmt.Println(res)
}
Результат выполнения кода:
"Word count: 6"
Пример
Давайте обработаем текст с несколькими строками, используя bufio.ScanWords:
package main
import (
"bufio"
"fmt"
"strings"
)
func main() {
input := "Hello world\nThis is Go\nbufio Scanner"
scanner := bufio.NewScanner(strings.NewReader(input))
scanner.Split(bufio.ScanWords)
var result []string
for scanner.Scan() {
result = append(result, scanner.Text())
}
res := result
fmt.Println(res)
}
Результат выполнения кода:
[Hello world This is Go bufio Scanner]
Смотрите также
-
функцию
bufio.Scanner.Split,
которая устанавливает функцию разделения для сканера -
функцию
bufio.ScanLines,
которая разбивает данные на строки -
функцию
bufio.ScanBytes,
которая разбивает данные на отдельные байты -
функцию
bufio.Scanner.Text,
которая возвращает текущий токен в виде строки