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
}

特性说明

  1. 支持多语言文本转换(如中文、斯拉夫语等)
  2. 自动去除特殊字符
  3. 将空格转换为连字符"-"
  4. 统一转换为小写字母

高级用法

如果需要自定义配置,可以创建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)
	}
}

注意事项

  1. 对于某些语言(如日语、韩语等),可能需要额外的字典支持
  2. 默认情况下会转换为小写,可通过 slug.Lowercase = false 关闭
  3. 特殊字符会被替换或移除
  4. 连续的分隔符会被合并为一个

go-slugify 是一个简单易用但功能强大的库,非常适合需要生成 SEO 友好 URL 的 Web 应用程序。

回到顶部