Go:
Видобування підрядків
Як це зробити:
У Go тип string
є лише для читання зрізом (slice) байтів. Для видобування підрядків, головним чином використовується синтаксис зрізу
, разом з вбудованою функцією len()
для перевірки довжини та пакетом strings
для більш складних операцій. Ось як ви можете це зробити:
Базове зрізання
package main
import (
"fmt"
)
func main() {
str := "Hello, World!"
// Видобуває "World"
subStr := str[7:12]
fmt.Println(subStr) // Вивід: World
}
Використання пакету strings
Для більш складного видобування підрядків, таких як отримання рядків після або перед конкретним підрядком, можна використовувати пакет strings
.
package main
import (
"fmt"
"strings"
)
func main() {
str := "name=John Doe"
// Видобуває підрядок після "="
subStr := strings.SplitN(str, "=", 2)[1]
fmt.Println(subStr) // Вивід: John Doe
}
Важливо зауважити, що рядки в Go кодуються в UTF-8, і прямий зріз байтів не завжди може дати дійсні рядки, якщо вони включають багатобайтові символи. Для підтримки Unicode, вважайте за краще використання range
або пакету utf8
.
Обробка символів Unicode
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
str := "Hello, 世界"
// Знаходження підрядка, враховуючи символи Unicode
runeStr := []rune(str)
subStr := string(runeStr[7:])
fmt.Println(subStr) // Вивід: 世界
}
Глибоке занурення
Видобування підрядків у Go є прямолінійним завдяки його синтаксису зрізу та всеосяжній стандартній бібліотеці. Історично, раніше програмні мови надавали більш прямі функції або методи для обробки таких текстових маніпуляцій. Однак, підхід Go підкреслює безпеку та ефективність, зокрема з його незмінними рядками та явним обробленням символів Unicode через руни.
Хоча прямолінійне зрізання користується перевагами ефективності виконання, воно успадковує складнощі обробки символів UTF-8 напряму. Введення типу rune
дозволяє програмам на Go безпечно обробляти текст Unicode, роблячи його потужною альтернативою для міжнародних застосунків.
Більше того, програмістам, що прийшли з інших мов, може не вистачати вбудованих високорівневих функцій маніпуляції рядками. Проте, пакети strings
та bytes
в стандартній бібліотеці Go пропонують багатий набір функцій, які, хоч і вимагають трохи більше шаблонного коду, надають потужні можливості для обробки рядків, включаючи видобування підрядків.
По суті, вибір Go щодо маніпуляції з рядками відображає його цілі щодо простоти, продуктивності та безпеки при роботі з сучасними, інтернаціоналізованими текстовими даними. Хоча це може вимагати невеликої адаптації, Go пропонує ефективні та дієві інструменти для обробки підрядків і більше.