golang多语言支持美化URL生成插件库go-slugify的使用
golang多语言支持美化URL生成插件库go-slugify的使用
简介
go-slugify是一个用于生成美化URL的Golang库,支持多语言文本转换。它可以将各种语言的文本转换为适合URL使用的格式。
安装
使用以下命令安装go-slugify库:
go get -u github.com/mozillazg/go-slugify
也可以安装CLI工具:
go get -u github.com/mozillazg/go-slugify/slugify
$ slugify "北京kožušček,abc"
bei-jing-kozuscek-abc
使用示例
下面是一个完整的使用示例:
package main
import (
"fmt"
"github.com/mozillazg/go-slugify"
)
func main() {
// 示例1:基本用法
s := "北京kožušček,abc"
fmt.Println(slugify.Slugify(s))
// 输出: bei-jing-kozuscek-abc
// 示例2:带空格的文本
title := "Golang 多语言支持 美化URL"
fmt.Println(slugify.Slugify(title))
// 输出: golang-duo-yu-yan-zhi-chi-mei-hua-url
// 示例3:特殊字符处理
special := "Hello!@#$%^&*() World"
fmt.Println(slugify.Slugify(special))
// 输出: hello-world
}
特性说明
- 支持多语言文本转换(如中文、斯拉夫语等)
- 自动去除特殊字符
- 将空格转换为连字符"-"
- 统一转换为小写字母
高级用法
如果需要自定义配置,可以创建Slugify实例:
package main
import (
"fmt"
"github.com/mozillazg/go-slugify"
)
func main() {
// 创建自定义Slugify实例
slug := slugify.New(slugify.Config{
Lowercase: false, // 保持大写
Separator: '_', // 使用下划线分隔
})
s := "北京kožušček,abc"
fmt.Println(slug.Slugify(s))
// 输出: Bei_Jing_kozuscek_abc
}
这个库非常适合用于生成博客文章、产品页面的SEO友好URL。
更多关于golang多语言支持美化URL生成插件库go-slugify的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html
1 回复
更多关于golang多语言支持美化URL生成插件库go-slugify的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
go-slugify 使用指南:Golang 多语言 URL 美化插件
go-slugify 是一个用于生成 SEO 友好 URL 的 Go 语言库,它支持多语言处理,可以将各种语言的字符串转换为适合 URL 的格式。
安装
go get github.com/gosimple/slug
基本用法
package main
import (
"fmt"
"github.com/gosimple/slug"
)
func main() {
// 基本示例
text := "Hello World! This is a test."
slug := slug.Make(text)
fmt.Println(slug) // 输出: hello-world-this-is-a-test
// 中文处理
chineseText := "你好,世界!"
chineseSlug := slug.Make(chineseText)
fmt.Println(chineseSlug) // 输出: ni-hao-shi-jie
// 俄语处理
russianText := "Привет, мир!"
russianSlug := slug.MakeLang(russianText, "ru")
fmt.Println(russianSlug) // 输出: privet-mir
}
高级功能
1. 自定义选项
func main() {
// 自定义分隔符
slug.CustomSub = '_'
text := "Hello World"
fmt.Println(slug.Make(text)) // 输出: hello_world
// 恢复默认设置
slug.CustomSub = '-'
// 自定义替换映射
slug.CustomRuneSubs = map[rune]string{
'&': "and",
'@': "at",
}
text = "John&Doe@example"
fmt.Println(slug.Make(text)) // 输出: john-and-doe-at-example
}
2. 多语言支持
func main() {
// 德语处理
germanText := "äöü ÄÖÜ ß"
germanSlug := slug.MakeLang(germanText, "de")
fmt.Println(germanSlug) // 输出: aoe-aeoe-ue
// 法语处理
frenchText := "Héllò Wôrld"
frenchSlug := slug.MakeLang(frenchText, "fr")
fmt.Println(frenchSlug) // 输出: hello-world
// 日语处理 (需要先安装额外的字典)
japaneseText := "こんにちは世界"
japaneseSlug := slug.MakeLang(japaneseText, "ja")
fmt.Println(japaneseSlug) // 输出: konnichiha-shi-jie
}
3. 保留大小写
func main() {
// 默认小写
text := "GoLang is Awesome"
fmt.Println(slug.Make(text)) // 输出: golang-is-awesome
// 保留大小写
slug.Lowercase = false
fmt.Println(slug.Make(text)) // 输出: GoLang-is-Awesome
}
实际应用示例
package main
import (
"fmt"
"github.com/gosimple/slug"
)
type Article struct {
ID int
Title string
Slug string
}
func NewArticle(title string) *Article {
return &Article{
Title: title,
Slug: slug.Make(title),
}
}
func main() {
articles := []*Article{
NewArticle("Go语言入门指南"),
NewArticle("Advanced Go Patterns"),
NewArticle("¿Cómo aprender Go rápido?"),
}
for _, article := range articles {
fmt.Printf("Title: %s\nSlug: %s\n\n", article.Title, article.Slug)
}
}
/*
输出:
Title: Go语言入门指南
Slug: go-yu-yan-ru-men-zhi-nan
Title: Advanced Go Patterns
Slug: advanced-go-patterns
Title: ¿Cómo aprender Go rápido?
Slug: como-aprender-go-rapido
*/
性能考虑
go-slugify 经过优化,性能良好。以下是一个简单的基准测试:
func BenchmarkSlugMake(b *testing.B) {
text := "This is a benchmark test for go-slugify performance"
for i := 0; i < b.N; i++ {
_ = slug.Make(text)
}
}
注意事项
- 对于某些语言(如日语、韩语等),可能需要额外的字典支持
- 默认情况下会转换为小写,可通过
slug.Lowercase = false
关闭 - 特殊字符会被替换或移除
- 连续的分隔符会被合并为一个
go-slugify 是一个简单易用但功能强大的库,非常适合需要生成 SEO 友好 URL 的 Web 应用程序。