XString

package
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 9, 2025 License: MIT Imports: 9 Imported by: 1

README

XString

Release Reference Report DeepWiki Discord

提供了高效的字符串处理工具,支持转换、操作、求值和加密等功能。

功能特性

  • 字符串转换:支持整数、浮点数与字符串之间的转换,提供零拷贝的字节切片转换
  • 字符串操作:提供分割、查找、替换、修剪等基本操作
  • 字符串求值:支持可扩展的字符串求值系统,支持自定义求值器
  • 加密解密:支持 DES 加密的字符串安全处理,支持自定义密钥
  • 随机字符串:支持生成指定格式和长度的随机字符串

使用手册

1. 字符串转换
1.1 整数转换
// 字符串转整数
num := XString.ToInt("123")     // 返回:123

// 整数转字符串
str := XString.ToString(456)    // 返回:"456"
1.2 浮点数格式化
// 格式化浮点数,指定小数位数
fixed := XString.ToFixed(3.14159, 2)  // 返回:"3.14"
1.3 字节切片转换
// 字符串转字节切片(零拷贝)
buf := XString.ToBuffer("hello")

// 字节切片转字符串(零拷贝)
str := XString.FromBuffer(buf)
2. 字符串操作
2.1 基本操作
// 分割字符串
parts := XString.Split("a,b,c", ",")  // 返回:["a", "b", "c"]

// 查找子串
pos := XString.IndexOf("hello", "l")   // 返回:2
last := XString.LastIndexOf("hello", "l") // 返回:3

// 提取子串
sub := XString.Sub("hello", 0, 2)      // 返回:"he"
2.2 判断操作
// 检查前缀后缀
hasPrefix := XString.StartsWith("hello", "he") // 返回:true
hasSuffix := XString.EndsWith("hello", "lo")   // 返回:true

// 包含检查
contains := XString.Contains("hello", "ll")    // 返回:true

// 空值检查
isEmpty := XString.IsEmpty("")               // 返回:true
3. 字符串求值
3.1 Map 方式求值
data := map[string]string{
    "${name}": "John",
    "${age}": "30",
}
result := XString.Eval("Name: ${name}, Age: ${age}", data)
// 返回:"Name: John, Age: 30"
3.2 自定义求值器
type MyEvaluator struct{}

func (e *MyEvaluator) Eval(input string) string {
    // 自定义求值逻辑
    return input
}

evaluator := &MyEvaluator{}
result := XString.Eval("some text", evaluator)
4. 加密解密
4.1 字符串加密
// 使用默认密钥加密
encrypted := XString.Encrypt("sensitive data")

// 使用自定义密钥加密
encrypted := XString.Encrypt("sensitive data", "mykey")
4.2 字符串解密
// 使用默认密钥解密
decrypted := XString.Decrypt(encrypted)

// 使用自定义密钥解密
decrypted := XString.Decrypt(encrypted, "mykey")
5. 随机字符串
5.1 生成随机字符串
// 生成32位无连字符的随机字符串
random := XString.Random("N")  // 返回:如 "c9a0cad5e9624b3b8e07f5df0e5c1bbc"

// 生成36位带连字符的随机字符串
random := XString.Random("D")  // 返回:如 "c9a0cad5-e962-4b3b-8e07-f5df0e5c1bbc"

// 生成指定长度的随机字符串
random := XString.Random("N", 16)  // 返回:如 "c9a0cad5e9624b3b"

常见问题

1. 字符串求值中的变量未被替换

确保变量名称完全匹配,包括 ${} 符号。例如:

// 正确用法
data := map[string]string{"${var}": "value"}
result := XString.Eval("${var}", data)  // 返回:"value"

// 错误用法
data := map[string]string{"var": "value"}
result := XString.Eval("${var}", data)  // 返回:"${var}"

更多问题,请查阅问题反馈

项目信息

Documentation

Overview

XString 提供了高效的字符串处理工具,支持转换、操作、求值和加密等功能。

功能特性

  • 字符串转换:支持整数、浮点数与字符串之间的转换,提供零拷贝的字节切片转换
  • 字符串操作:提供分割、查找、替换、修剪等基本操作
  • 字符串求值:支持可扩展的字符串求值系统,支持自定义求值器
  • 加密解密:支持 DES 加密的字符串安全处理,支持自定义密钥
  • 随机字符串:支持生成指定格式和长度的随机字符串

使用手册

1. 字符串转换

1.1 整数转换

// 字符串转整数
num := XString.ToInt("123")     // 返回:123

// 整数转字符串
str := XString.ToString(456)    // 返回:"456"

1.2 浮点数格式化

// 格式化浮点数,指定小数位数
fixed := XString.ToFixed(3.14159, 2)  // 返回:"3.14"

1.3 字节切片转换

// 字符串转字节切片(零拷贝)
buf := XString.ToBuffer("hello")

// 字节切片转字符串(零拷贝)
str := XString.FromBuffer(buf)

2. 字符串操作

2.1 基本操作

// 分割字符串
parts := XString.Split("a,b,c", ",")  // 返回:["a", "b", "c"]

// 查找子串
pos := XString.IndexOf("hello", "l")   // 返回:2
last := XString.LastIndexOf("hello", "l") // 返回:3

// 提取子串
sub := XString.Sub("hello", 0, 2)      // 返回:"he"

2.2 判断操作

// 检查前缀后缀
hasPrefix := XString.StartsWith("hello", "he") // 返回:true
hasSuffix := XString.EndsWith("hello", "lo")   // 返回:true

// 包含检查
contains := XString.Contains("hello", "ll")    // 返回:true

// 空值检查
isEmpty := XString.IsEmpty("")               // 返回:true

3. 字符串求值

3.1 Map 方式求值

data := map[string]string{
	"${name}": "John",
	"${age}": "30",
}
result := XString.Eval("Name: ${name}, Age: ${age}", data)
// 返回:"Name: John, Age: 30"

3.2 自定义求值器

type MyEvaluator struct{}

func (e *MyEvaluator) Eval(input string) string {
	// 自定义求值逻辑
	return input
}

evaluator := &MyEvaluator{}
result := XString.Eval("some text", evaluator)

4. 加密解密

4.1 字符串加密

// 使用默认密钥加密
encrypted := XString.Encrypt("sensitive data")

// 使用自定义密钥加密
encrypted := XString.Encrypt("sensitive data", "mykey")

4.2 字符串解密

// 使用默认密钥解密
decrypted := XString.Decrypt(encrypted)

// 使用自定义密钥解密
decrypted := XString.Decrypt(encrypted, "mykey")

5. 随机字符串

5.1 生成随机字符串

// 生成32位无连字符的随机字符串
random := XString.Random("N")  // 返回:如 "c9a0cad5e9624b3b8e07f5df0e5c1bbc"

// 生成36位带连字符的随机字符串
random := XString.Random("D")  // 返回:如 "c9a0cad5-e962-4b3b-8e07-f5df0e5c1bbc"

// 生成指定长度的随机字符串
random := XString.Random("N", 16)  // 返回:如 "c9a0cad5e9624b3b"

更多信息请参考模块文档。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Contains

func Contains(str string, of string) bool

Contains 检查字符串是否包含指定的子字符串。 str 是要检查的字符串。 of 是要查找的子字符串。 返回字符串是否包含指定子字符串。

func Decrypt

func Decrypt[T string | []byte](data string, key ...string) T

Decrypt 解密DES加密的数据。 data 是base64编码的加密数据。 key 是可选的解密密钥,默认使用rgbIV。 返回解密后的数据。

func Encrypt

func Encrypt[T string | []byte](data T, key ...string) string

Encrypt 使用DES算法加密数据。 data 是要加密的数据。 key 是可选的加密密钥,默认使用rgbIV。 返回base64编码的加密字符串。

func EndsWith

func EndsWith(str string, of string) bool

EndsWith 检查字符串是否以指定的子字符串结尾。 str 是要检查的字符串。 of 是要检查的子字符串。 返回字符串是否以指定子字符串结尾。

func Eval

func Eval(input string, evaluators ...any) string

Eval 使用提供的求值器或键值映射对字符串进行求值。 input 是要求值的字符串。 evaluators 是可变数量的求值器(IEvaluator)或map[string]string。 返回求值后的字符串。

func Format

func Format(format string, args ...any) string

Format 使用格式说明符格式化字符串。 format 是格式说明符。 args 是格式化参数。 返回格式化后的字符串。

func FromBuffer

func FromBuffer(b []byte) string

FromBuffer 将字节切片转换为字符串,不进行内存复制。 b 是要转换的字节切片。 返回转换后的字符串。

func IndexOf

func IndexOf(str string, of string) int

IndexOf 查找子字符串在字符串中第一次出现的位置。 str 是要搜索的字符串。 of 是要查找的子字符串。 返回子字符串第一次出现的索引,如果未找到则返回 -1。

func IsEmpty

func IsEmpty(str string) bool

IsEmpty 检查字符串是否为空。 str 是要检查的字符串。 返回字符串是否为空。

func LastIndexOf

func LastIndexOf(str string, of string) int

LastIndexOf 查找子字符串在字符串中最后一次出现的位置。 str 是要搜索的字符串。 of 是要查找的子字符串。 返回子字符串最后一次出现的索引,如果未找到则返回 -1。

func Random

func Random(format ...string) string

Random 生成随机字符串。 format 参数指定格式("D"表示36位带连字符,"N"表示32位无连字符), 返回生成的随机字符串。

示例:

random := XString.Random()      // 返回:"c9a0cad5e9624b3b8e07f5df0e5c1bbc"
random := XString.Random("D")   // 返回:"c9a0cad5-e962-4b3b-8e07-f5df0e5c1bbc"

func Replace

func Replace(str string, from string, to string) string

Replace 替换字符串中所有出现的子字符串。 str 是要处理的字符串。 from 是要替换的子字符串。 to 是替换后的子字符串。 返回替换后的字符串。

func Split

func Split(str string, sep string) []string

Split 使用分隔符分割字符串。 str 是要分割的字符串。 sep 是分隔符。 返回分割后的字符串切片。

func StartsWith

func StartsWith(str string, of string) bool

StartsWith 检查字符串是否以指定的子字符串开头。 str 是要检查的字符串。 of 是要检查的子字符串。 返回字符串是否以指定子字符串开头。

func Sub

func Sub(str string, from int, to int) string

Sub 提取字符串中指定范围的子字符串。 str 是源字符串。 from 是起始索引。 to 是结束索引。 返回提取的子字符串。

func ToBuffer

func ToBuffer(s string) []byte

ToBuffer 将字符串转换为字节切片,不进行内存复制。 s 是要转换的字符串。 返回转换后的字节切片。

func ToFixed

func ToFixed(float any, fixed ...int) string

ToFixed 将浮点数转换为具有指定小数位数的字符串。 float 是要转换的浮点数。 fixed 是可选的小数位数,默认为2。 返回格式化后的字符串。

func ToInt

func ToInt(str string) int

ToInt 将字符串转换为整数。如果转换失败,则返回 0。 str 是要转换的字符串。 返回转换后的整数。

func ToString

func ToString(itr int) string

ToString 将整数转换为字符串。 itr 是要转换的整数。 返回转换后的字符串。

func Trim

func Trim(str string) string

Trim 移除字符串两端的空格。 str 是要处理的字符串。 返回处理后的字符串。

Types

type IEvaluator

type IEvaluator interface {
	// Eval 对输入字符串进行求值。
	// input 是要求值的字符串。
	// 返回求值后的字符串。
	Eval(input string) string
}

IEvaluator 定义字符串求值的接口。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL