При разделении строки на слова могут возникнуть некоторые сложности. Во-первых, нужно определиться с тем, что из себя будет представлять слово, а также с тем, что будет рассмотрено в качестве разделителя. К примеру, это может быть пробел или какой-то другой знак. После принятия данных решений нужно выбрать подходящую функцию из пакета strings. Рассмотрим наиболее простой случай.

Как разбить строку на слова?

Создайте файл whitespace.go со следующим содержимым:

Форум Гоферов

Мы работаем над форумом для программистов на Golang. Очень нужны модераторы которые хотят помочь с ответами для новичков и помочь в развитии Go-сообщества.

Go на Форум

Уроки, статьи и Видео

Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.

Go в ВК Go в Telegram

1. Запустите код через go run whitespace.go;
2. Посмотрите на результат в терминале:

разделение строки в go

3. Создайте еще один файл под названием anyother.go со следующим содержимым:

4.Запустите код через go run anyother.go;
5. Посмотрите на вывод в терминале:

разделение строки golang

6. Создайте еще один файл, он должен называться specfunction.go, его содержимое следующее:

7. Запустите код через go run specfunction.go;
8. Посмотрите на вывод в терминале:

разбить строку go

Разбивает строку в массив с помощью регулярного выражения

9. Создайте другой файл, назовите его regex.go, его содержимое следующее:

10. Запустите код через go run regex.go;
11. Посмотрите на результат в терминале:

разбить строку go

Функция Split() для разделения строки на слова

Наиболее простым способ разделения строки на слова является случай, где в качестве разделителей рассматриваются пробелы. Пробелы определяются функцией IsSpace из пакета unicode:

‘\t’, ‘\n’, ‘\v’, ‘\f’, ‘\r’, ‘ ‘, U+0085 (NEL), U+00A0 (NBSP). 

Функция Fields из пакета strings может использоваться для разделения предложения с помощью символов пробела, как было показано ранее. Шаги 1-2 описывать первый частый случай.

Если в качестве разделителя нужен другой символ, тогда задействуется функция Split. Использование другого разделителя описывается в шагах 3-5. Обратите внимание, что в строке опущены пробелы.

При необходимости использовать более сложную функцию при разделении строки в определенной точке можете использовать FieldsFunc. Одним из аргументов функции является функция, что поглощает руны данной строки и возвращает значение true, если строку нужно поделить в данном месте. Данная опция описана на этапах 6-8.

Последним вариантом, упомянутым в примере, являетcя регулярное выражения. Структура Regexp из пакета regexp содержит метод Split, что соответствует всем вашим ожиданиям. Он делит строку в месте совпадающей группы. Данный подход используется на этапах 9-11.

В пакете strings есть различные функции SplitXXX, что могут помочь выполнить более сложные задачи.