unicode
В разработке на Go операция извлечения подстрок выполняется очень часто, особенно при смешанной обработке китайского и английского текста, где следует уделять особое внимание вопросам кодировки. В этой статье систематически рассматриваются четыре основных способа извлечения подстрок в Go с примерами кода и техническими деталями.
Решение для безопасной обработки Unicode
Безопасное извлечение на уровне символов через преобразование в []rune:
go
func main() {
str := "Hello, 世界!"
runes := []rune(str)
// Безопасное извлечение на уровне символов
sub3 := string(runes[7:9])
fmt.Println("Безопасное извлечение китайских символов:", sub3) // Вывод: 世界
}Сравнение технологий:
| Решение | Временная сложность | Расход памяти | Сценарии использования |
|---|---|---|---|
| Байтовый срез | O(1) | Низкий | Строки только с ASCII символами |
| Преобразование []rune | O(n) | Высокий | Строки с многобайтовыми символами |
