Разбить строку на пробелы в Go?
учитывая входную строку, такую как " word1 word2 word3 word4 "
, каков был бы лучший подход для разделения этого массива строк в Go? Обратите внимание, что там может быть любой количество пробелов или символов Юникода между каждым словом.
в Java, я бы просто использовать someString.trim().split("s+")
.
(Примечание: возможный дубликат разделенной строки с использованием регулярного выражения в Go не дает хорошего качественного ответа. Пожалуйста, приведите реальный пример, а не просто ссылку на regexp
или strings
ссылки на пакеты.)
3 ответа:
The
strings
пакетаFields
метод.someString := "one two three four " words := strings.Fields(someString) fmt.Println(words, len(words)) // [one two three four] 4
демо:http://play.golang.org/p/et97S90cIH
документы:
func Fields(s string) []string
поля разбивает строку
s
вокруг каждого экземпляра одного или нескольких последовательных пробелов, возвращающих массив подстрокs
или пустой список, Если s содержит только пробелы.
Если вы используете совет: регулярное выражение.Сплит
func (re *Regexp) Split(s string, n int) []string
разбить ломтики s на подстроки, разделенные выражением и возвращает фрагмент подстрок между этими совпадениями выражений.
срез, возвращаемый этим методом, состоит из всех подстрок s не содержится в срезе, возвращенном FindAllString. Когда звонили в выражении, не содержащем метасимволов, оно эквивалентно веревка.Сплитн.
пример:
s := regexp.MustCompile("a*").Split("abaabaccadaaae", 5) // s: ["", "b", "b", "c", "cadaaae"]
счетчик определяет количество возвращаемых подстрок:
n > 0: at most n substrings; the last substring will be the unsplit remainder. n == 0: the result is nil (zero substrings) n < 0: all substrings