Голанг: как преобразовать строку в руну на примере Go

Тип руны Голанг — это псевдоним для int32, и используется, чтобы указать, чем целое число представляет кодовую точку. ASCII определяет 128 символов, идентифицируемых кодовыми точками 0–127. Когда вы конвертируете строку в срез руны, вы получаете новый срез, содержащий кодовые точки Unicode (руны) строки.

Byte срез — это просто как строка, но изменяемая. Например, вы можете изменить каждый байт или символ. Это очень эффективно для работы с содержимым файла, будь то текстовый файл, двоичный файл или поток ввода-вывода из сети.

Rune slice похож на байтовый срез, за ​​исключением того, что каждый индекс является символом, а не байтом. Это лучше всего, если вы работает с текстовыми файлами, содержащими много не-ASCII символов, например китайский текст или математические формулы ∑ или текст со смайликами ♥.

Преобразование строки Голанга в руну

В Голанге мы часто используем строки для хранения символьные данные. Но у кусочков рун есть много преимуществ: они более последовательно относятся к персонажам. Для символов Юникода можно использовать срез руны для добавления и изменения символов без ошибок. Если мы действуем непосредственно со строкой, здесь могут возникнуть проблемы.

См. Следующий код.

 package mainimport ("fmt") func main () {r: = [] rune ("CoronaVirus") fmt.Println (r) fmt.Printf ("% U  n", r)} 

Вывод

 запустите hello.go [67 111 114 111 110 97 86 105 114 117 115] [U + 0043 U +  006F U + 0072 U + 006F U + 006E U + 0061 U + 0056 U + 0069 U + 0072 U + 0075 U + 0073] 

В приведенном выше коде преобразование строки в фрагмент runes дает срез, элементы которого являются кодовыми точками Unicode строки.

Срезы рун также идеально подходят для получения подстрок из строки. Это поддерживает символы Unicode без риска повреждения данных.

Преобразование рун Голанга в строку

При преобразовании руны в строку вы получите новую строку, которая представляет собой объединение рун, преобразованных в строки в кодировке UTF-8. Значения вне диапазона допустимых кодовых точек Unicode преобразуются в uFFFD, символ замены Unicode.

См. Следующий код.

 package mainimport ("fmt")  func main () {s: = string ([] rune {' u0051', ' u0052', ' u0053', ' u20BC'}) fmt.Println (s)} 

Вывод

 go run hello.goQRS₼ 

Производительность

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

Заключение

Это одно и то же в трех разных форматах.

  1. Строка — неизменяемая последовательность байтов.
  2. Байт-срез — это изменяемая последовательность байтов.
  3. Срез руны — это перегруппировка байтового среза так, чтобы каждый индекс был символом.

Строка — отличный способ работать с короткими последовательностями байтов или символов. Каждый раз, когда вы работаете со строкой, такой как поиск, замена строки или выбор подстроки, создается новая строка. Это очень неэффективно, если строка огромна, например, содержимое файла.

Преобразование строки в фрагмент руны в Голанге — стандартная операция. Он направляет код, который с меньшей вероятностью повредит символы Unicode.

Наконец, пример преобразования строки в руну в Go завершен.

Оцените статью
nanomode.ru
Добавить комментарий