Изучение различных методов проверки того, заканчивается ли строка Go другой строкой

В программировании на Go работа со строками — обычная задача. Одним из часто встречающихся требований является проверка, заканчивается ли данная строка другой строкой. В этой статье мы рассмотрим различные методы решения этой задачи, приведя попутно примеры кода.

Метод 1: strings.HasSuffix
Пакет strings в Go предоставляет встроенную функцию HasSuffix, которая проверяет, заканчивается ли строка указанным суффиксом. Вот пример:

package main
import (
    "fmt"
    "strings"
)
func main() {
    str := "Hello, world!"
    suffix := "world!"
    if strings.HasSuffix(str, suffix) {
        fmt.Println("String ends with suffix")
    } else {
        fmt.Println("String does not end with suffix")
    }
}

Метод 2: сравнение подстрок
Другой подход заключается в сравнении подстроки в конце строки с указанным суффиксом. Мы можем добиться этого, используя нарезку строк. Вот пример:

package main
import "fmt"
func endsWith(str, suffix string) bool {
    if len(str) < len(suffix) {
        return false
    }
    endSubstring := str[len(str)-len(suffix):]
    return endSubstring == suffix
}
func main() {
    str := "Hello, world!"
    suffix := "world!"
    if endsWith(str, suffix) {
        fmt.Println("String ends with suffix")
    } else {
        fmt.Println("String does not end with suffix")
    }
}

Метод 3. Регулярные выражения
Регулярные выражения предоставляют мощные возможности сопоставления с образцом. Мы можем использовать их, чтобы проверить, заканчивается ли строка определенным суффиксом. Вот пример:

package main
import (
    "fmt"
    "regexp"
)
func main() {
    str := "Hello, world!"
    suffix := "world!"
    match, _ := regexp.MatchString(fmt.Sprintf(`%s$`, regexp.QuoteMeta(suffix)), str)
    if match {
        fmt.Println("String ends with suffix")
    } else {
        fmt.Println("String does not end with suffix")
    }
}

В этой статье мы рассмотрели три различных метода проверки того, заканчивается ли строка Go другой строкой. Мы обсудили использование функции strings.HasSuffix, сравнение подстрок и использование регулярных выражений. Каждый метод имеет свои преимущества и может подойти для разных сценариев. Включив эти методы в свои программы на Go, вы сможете эффективно решать задачи манипулирования строками.