Видобування підрядків

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 пропонує ефективні та дієві інструменти для обробки підрядків і більше.