В программировании на 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, вы сможете эффективно решать задачи манипулирования строками.