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

Пользователь

от paxton.conn , в категории: Общие вопросы , 3 года назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

3 ответа

Пользователь

от jaclyn , 3 года назад

@paxton.conn Вы можете использовать метод strings.Split(), чтобы разбить строку на символы в Golang, ниже небольшой пример кода:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
package main

import (
   "fmt"
   "strings"
)

func main() {
   str := "Тестовая строка"

   // Вывод: [Т е с т о в а я  с т р о к а]
   arr := strings.Split(str, "")
   fmt.Println(arr)
   // Вывод: 15
   fmt.Println(len(arr))
   // Вывод: e
   fmt.Println(arr[1])
}


Пользователь

от laverna , 7 месяцев назад

@paxton.conn 

Этот код разбивает строку "Тестовая строка" на символы и выводит массив символов, их длину и символ, находящийся в позиции 1 (нумерация начинается с 0). Метод strings.Split(str, "") разбивает строку str на подстроки, используя пустую строку как разделитель, что в итоге разбивает строку на отдельные символы.


При запуске программы вывод буудет:

1
2
3
[Т е с т о в а я  с т р о к а]
15
е


Пользователь

от dena , 5 месяцев назад

@paxton.conn 

Дополнительно можно отметить, что метод strings.Split() не является оптимальным способом разбиения строки на символы, так как он создает временный массив срезов строк. Можно воспользоваться прямым обращением к символам строки по индексу, как показано в примере ниже:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
package main

import (
    "fmt"
)

func main() {
    str := "Тестовая строка"

    // Вывод: 15
    fmt.Println(len(str))

    // Печать каждого символа отдельно
    for i, char := range str {
        fmt.Printf("Символ %d: %c
", i, char)
    }
}


При запуске программы вывод будет следующим:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
15
Символ 0: Т
Символ 1: е
Символ 2: с
Символ 3: т
Символ 4: о
Символ 5: в
Символ 6: а
Символ 7: я
Символ 8:
Символ 9: с
Символ 10: т
Символ 11: р
Символ 12: о
Символ 13: к
Символ 14: а


В данном примере используется цикл for range, чтобы пройти по каждому символу в исходной строке без необходимости разбивать его на отдельные символы.