Обработка русских символов

242 views
Skip to first unread message

Danil Tolmachev

unread,
Dec 1, 2017, 4:06:47 PM12/1/17
to Golang Russian
a:="аюв"
fmt
.Println(a) //Вернет аюв
fmt
.Println(a[1:2]) //Вернет знак вопроса в ромбике
b
:=a[1:2]
fmt
.Println(b) //Вернет знак вопроса в ромбике

Никак не пойму как присвоить переменной b русскую букву, а следом и вывести переменную b (без доп. форматирований)

Alex Lurye

unread,
Dec 1, 2017, 4:45:39 PM12/1/17
to gola...@googlegroups.com
Дело в том, что строки в Go хранятся в utf8, и операция поиска символа по смещению имеет сложность O(N) - фактически надо просканировать всю строку от начала до этого символа, чтобы суметь его выковырить.

b := string([]rune(a)[1:2])

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

--
Вы получили это сообщение, поскольку подписаны на группу "Golang Russian".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес golang-ru+...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages