xstring

package
v0.3.8 Latest Latest
Warning

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

Go to latest
Published: Apr 24, 2024 License: BSD-3-Clause-Clear Imports: 32 Imported by: 0

Documentation

Overview

xstring包

Index

Constants

View Source
const (
	// 将字符串填充到左侧
	PAD_LEFT = 1
	// 将字符串填充到右侧
	PAD_RIGHT = 2
)

字符串填充位置

Variables

View Source
var WeekList = map[uint8]string{
	0: "日",
	1: "一",
	2: "二",
	3: "三",
	4: "四",
	5: "五",
	6: "六",
}

周uint定位

Functions

func AString added in v0.1.32

func AString(c any) string

Any类型变量转为String类型变量

c	待转换的变量

func Aes added in v0.2.14

func Aes(src, key []byte) ([]byte, error)

AES加密

src	明文
key	密钥

func Any2Float added in v0.2.21

func Any2Float(a any) float64

任意类型断言成浮点型 PS: 会将整形变量也改变类型成浮点型,建议先确定好类型再行确定是否使用 经测试,类型断言的效率要比反射稍高,所以此处使用类型断言进行any类型转换

a	任意类型变量值

func Any2Int added in v0.2.21

func Any2Int(a any) int

强制断言成int类型(不考虑效率的情况下可以这么使用)

a	任意类型变量

func Any2Int16 added in v0.2.21

func Any2Int16(a any) int16

强制断言成int16类型

a	任意类型变量

func Any2Int32 added in v0.2.21

func Any2Int32(a any) int32

强制断言成int32类型

a	任意类型变量

func Any2Int8 added in v0.2.21

func Any2Int8(a any) int8

强制断言成int8类型

a	任意类型变量

func Any2Integer added in v0.2.21

func Any2Integer(a any) int64

任意类型断言成整形 PS: 浮点数会舍弃精度转换,所以建议先确定好不是浮点数、字符串等类型以后再进行转换 经测试,类型断言的效率要比反射稍高,所以此处使用类型断言进行any类型转换

a	任意类型变量值

func Any2UInt added in v0.2.21

func Any2UInt(a any) uint

强制断言成uint类型

a	任意类型变量

func Any2Uint16 added in v0.2.21

func Any2Uint16(a any) uint16

强制断言成uint16类型

a	任意类型变量

func Any2Uint32 added in v0.2.21

func Any2Uint32(a any) uint32

强制断言成uint32类型

a	任意类型变量

func Any2Uint64 added in v0.2.21

func Any2Uint64(a any) uint64

强制断言成uint64类型

a	任意类型变量

func Any2Uint8 added in v0.2.21

func Any2Uint8(a any) uint8

强制断言成uint8类型

a	任意类型变量

func Any2any added in v0.2.1

func Any2any(old, new any) error

结构体转换【通过json进行转换,所以建立结构体时请注意json对应】

old	待转换的变量类型
new	转换后的变量存储位置【此值需要为指针】

func Any2ype added in v0.2.21

func Any2ype(a any) uint8

断言任意变量的类型

a	任意类型变量

returns: 0~99, 0~9为大类,若仅需要判断大类的话可直接使用 <return> % 10 10~99为子分类,如:1为整形 31为字符串类型的整形 21为浮点类型的整形,若需要获取显示类型可使用 <return> == 3 || <return> / 10 == 3 来进行获取

0	未知类型
1	整形
2	浮点型
3	字符串型
31	字符串类型的整形
32	字符串类型的浮点型
4	json.Number类型
5	time.Time类型
6	time.Duration类型
7	error类型

func B2Int

func B2Int(s string) (num int64)

二进制转十进制

s	string	需要转换的二进制数

func BankCard added in v0.1.18

func BankCard(t string) string

银行卡号脱敏

t	待脱敏的银行卡号

func BankCardFormat added in v0.1.18

func BankCardFormat(t string) string

银行卡号格式化

t	待格式化的银行卡号

func Base64

func Base64(p string) string

对字符串进行base64编码

p	待编码的字符串

func Base64Raw

func Base64Raw(p string) string

对字符串进行base64编码[去除填充吗,一般用于jwt]

p	待编码的字符串

func BaseByte64 added in v0.2.14

func BaseByte64(p []byte) string

对字节码进行Base64编码

p	待编码的字节码

func BaseByte64Raw added in v0.2.14

func BaseByte64Raw(p []byte) string

对字符串进行base64编码[去除填充码,一般用于jwt]

p	待编码的字符串

func CamelCase added in v0.1.23

func CamelCase(str string) string

数据库表名转模型名【大驼峰转换】 PS: 此函数会将abc_def的表名转换为AbcDef的大驼峰命名

str	待转换的下划线命名的数据库表名称

func CardNo added in v0.1.18

func CardNo(t string) string

身份证号脱敏

t	脱敏前的身份证号

func CardNoFormat added in v0.1.18

func CardNoFormat(t string) string

身份证号格式化

t	格式化前的身份证号

func CheckCardNo added in v0.1.21

func CheckCardNo(c string) bool

中国国民身份证号效验[15、18位身份证号码格式]

c	待效验的字符串

func CheckDate added in v0.1.21

func CheckDate(c string) bool

日期格式效验

c	待效验的字符串

func CheckDateTime added in v0.1.21

func CheckDateTime(c string) bool

日期时间格式效验

c	待效验的字符串

func CheckDomain added in v0.1.21

func CheckDomain(c string) bool

域名格式效验

c	待效验的字符串

func CheckEmail added in v0.1.21

func CheckEmail(c string) bool

邮箱格式效验

c	待效验的邮箱

func CheckFloat added in v0.2.61

func CheckFloat(c string) bool

数字格式效验 - 验证通过正负数、小数、指数等

c	待效验的数字

func CheckIpv4 added in v0.1.21

func CheckIpv4(c string) bool

IPV4格式效验

c	待效验的字符串

func CheckIpv6 added in v0.1.21

func CheckIpv6(c string) bool

IPV6格式效验

c	待效验的字符串

func CheckNumber added in v0.1.21

func CheckNumber(c string) bool

纯数字格式效验

c	待效验的数字

func CheckPassword added in v0.1.21

func CheckPassword(c string, num, a, A, f bool) bool

效验用户输入的规则是否符合密码规则

c	待效验的字符串
num	必须输入数字?
a	必须输入小写字母?
A	必须输入大写字母?
f	必须存在ANSI标识内的符号

func CheckPhone added in v0.1.21

func CheckPhone(c string, fix bool) bool

手机号规则效验-国内手机号效验

c	待效验的手机号
fix	是否携带前缀

func CheckPhoneOther added in v0.1.21

func CheckPhoneOther(c string, gj string) bool

手机号规则效验-国际手机号效验(携带前缀)

c	待效验的手机号
gj	国家标识[如果不存在的话就会返回false,支持列表为内部的gj_phone字典进行效验,空表示全部效验,只要有一个通过就行]

func CheckRep added in v0.1.21

func CheckRep(c, rep string) bool

指定正则格式效验

c	待效验的字符串
rep	正则表达式

func CheckTel added in v0.1.21

func CheckTel(c string) bool

电话格式效验

c	待效验的字符串

func CheckTime added in v0.1.21

func CheckTime(c string) bool

时间格式效验

c	待效验的字符串

func CheckUrl added in v0.1.21

func CheckUrl(c string) bool

域名格式效验

c	待效验的字符串

func CheckUsername added in v0.1.21

func CheckUsername(c string) bool

效验用户输入的规则符合用户名规则:英文大小写字母+数字

c	待效验的字符串

func CheckVersion added in v0.1.30

func CheckVersion(min, now string) bool

版本检测,返回是否需要更新

min	最小版本号
now	当前版本号

func DerviceId added in v0.2.71

func DerviceId(name ...string) (string, error)

获取设备ID

name	上级目录列表

func Des added in v0.1.20

func Des(src, key []byte) ([]byte, error)

des的cbc模式加密函数

src	明文
key	密钥,大小为8byte

func EmojiDecode

func EmojiDecode(s string) string

表情解码 将emoji表情替换成类似[\u1f415]的字符串

s	待解码的含emoji表情的字符串

func EmojiEncode

func EmojiEncode(s string) string

表情编码 将类似[\u1f415]的解码emoji表情转换为原始的emoji表情

s	含有类似[\u1f415]字符串的字符串

func Format added in v0.1.18

func Format(number, format string) string

数字格式化

number	待格式化的数字
format	格式化成的字符串,以0替代数字,*替换原符号,其他字节直接原样输出

func Gz added in v0.2.62

func Gz(str []byte) ([]byte, error)

字符串压缩

str	待压缩字符串 - 使用gzip算法进行压缩

return 压缩后的字符串的HEX值

func HasContains

func HasContains(str string) bool

检测字符串中是否存在中文

str	待检测的字符串

func HasContainsQuest

func HasContainsQuest(str string) bool

快速检测字符串中是否存在中文 此处采用的为国标码GB18030和国际码Unicode的范围:0x4e00 ~ 0x9fff 0x3400 ~ 0x4dbf 0x20000 ~ 0x2a6df 详细字符集范围见下表: 字符集 字数 Unicode 编码 基本汉字 20902字 4E00-9FA5 基本汉字补充 90字 9FA6-9FFF 扩展A 6592字 3400-4DBF 扩展B 42720字 20000-2A6DF 扩展C 4154字 2A700-2B739 扩展D 222字 2B740-2B81D 扩展E 5762字 2B820-2CEA1 扩展F 7473字 2CEB0-2EBE0 扩展G 4939字 30000-3134A 扩展H 4192字 31350-323AF 康熙部首 214字 2F00-2FD5 部首扩展 115字① 2E80-2EF3 兼容汉字 472字② F900-FAD9 兼容扩展 542字 2F800-2FA1D 汉字笔画 36字 31C0-31E3 汉字结构 12字 2FF0-2FFB 汉语注音 43字 3105-312F 注音扩展 32字 31A0-31BF 〇 1字 3007

str	待检测的字符串

func HasEmoji

func HasEmoji(str string) bool

判断字符串中是否存在emoji表情【此处使用rune的取值范围来确定是不是emoji表情,中文最大值为0xffff】 此处采用的为国标码GB18030和国际码Unicode中都有收录emoji图形符号 0x2600 ~ 0x27ff 0x1f000 ~ 0x1f6ff

str	待判断的字符串

func HasLetter added in v0.1.8

func HasLetter(str string) bool

检测字符串中是否存在英文字母

str	待检测的字符串

func HasLetterLower added in v0.1.8

func HasLetterLower(str string) bool

检测字符串中是否存在英文字母-小写字母

str	待检测的字符串

func HasLetterUp added in v0.1.8

func HasLetterUp(str string) bool

检测字符串中是否存在英文字母-大写字母

str	待检测的字符串

func HasNumber added in v0.1.8

func HasNumber(str string) bool

检测字符串中是否存在数字

str	待检测的字符串

func HasPunct added in v0.1.8

func HasPunct(str string) bool

检测字符串中是否存在Unicode标点符号

str	待检测的字符串

func HasSpace added in v0.1.8

func HasSpace(str string) bool

检测字符串中是否存在空白符

str	待检测的字符串

func Hex2Bin added in v0.1.25

func Hex2Bin(str string) []byte

16进制转二进制byte

str	待转换的16进制字符串

func HtmlTrim

func HtmlTrim(src string) string

去除html标签和空白符

src	待去除的网页代码

func IsInteger added in v0.2.22

func IsInteger(a float64) bool

判断该类型是否为整数

a	待判断的浮点数

func JFloat32

func JFloat32(c json.Number) float32

json.Number转float32类型 因此类型为json转为float64以后再次转为其他数值类型,可能会存在数值溢出的问题

c	待转换的类型

func JFloat64

func JFloat64(c json.Number) float64

json.Number转float64类型 因此类型为json转为float64以后再次转为其他数值类型,可能会存在数值溢出的问题

c	待转换的类型

func JInt

func JInt(c json.Number) int

json.Number转int类型 因此类型为json转为int64以后再次转为其他数值类型,可能会存在数值溢出的问题

c	待转换的类型

func JInt16

func JInt16(c json.Number) int16

json.Number转int16类型 因此类型为json转为int64以后再次转为其他数值类型,可能会存在数值溢出的问题

c	待转换的类型

func JInt64

func JInt64(c json.Number) int64

json. 因此类型为json转为int64以后再次转为其他数值类型,可能会存在数值溢出的问题

c	待转换的类型

func JInt8

func JInt8(c json.Number) int8

json.Number转int8类型 因此类型为json转为int64以后再次转为其他数值类型,可能会存在数值溢出的问题

c	待转换的类型

func JUint

func JUint(c json.Number) uint

json.Number转uint类型 因此类型为json转为int64以后再次转为其他数值类型,可能会存在数值溢出的问题

c	待转换的类型

func JUint16

func JUint16(c json.Number) uint16

json.Number转uint16类型 因此类型为json转为int64以后再次转为其他数值类型,可能会存在数值溢出的问题

c	待转换的类型

func JUint64

func JUint64(c json.Number) uint64

json.Number转uint64类型 因此类型为json转为int64以后再次转为其他数值类型,可能会存在数值溢出的问题

c	待转换的类型

func JUint8

func JUint8(c json.Number) uint8

json.Number转uint8类型 因此类型为json转为int64以后再次转为其他数值类型,可能会存在数值溢出的问题

c	待转换的类型

func Jwt

func Jwt(key []byte, payloadData any) (string, error)

生成jwt签名

key			签名
payloadData	待加密的内容

func MD5

func MD5(text string) string

计算字符串的MD5值

text	待计算的字符串值

func MD5Byte

func MD5Byte(data []byte) string

计算byte字节流的MD5值

data	待计算的字节流的值

func MD5File

func MD5File(file string) string

计算文件的MD5值

file	文件的绝对路径

func Mac added in v0.1.34

func Mac() map[string]string

获取设备网卡MAC地址,一般使用此方法来计算设备的唯一标识

func Pad

func Pad(input string, padLength int, padString string, padType int) string

字符串填充到指定长度

input	string	原字符串
padLength	int	规定补齐后的字符串位数
padString	string	自定义填充字符串
padType	string	填充类型:PAD_LEFT(向左填充,自动补齐位数), 默认右侧

func Phone

func Phone(t string) string

手机号脱敏

t	待脱敏的手机号

func PhoneFormat added in v0.1.18

func PhoneFormat(t string) string

手机号格式化

t	待格式化的手机号

func Random

func Random(l int, arg ...string) string

获取随机数

l	int	获取随机数长度
arg	string	可选参数,随机数的发生范围【只有第一个可选参数生效】

func RandomNo added in v0.1.30

func RandomNo(cp string, l int) string

生成`年月日时分秒毫秒`的流水号 返回长度:14+len(cp)+l

cp	流水号前缀
l	毫秒位数,3-毫秒 6-微秒 9-纳秒,取值:1~9,不在此范围内则转化为3

func RandomPass

func RandomPass(l int, num, up, dow, sym bool) string

随机密码生成

l	密码长度
num	是否含有数字
up	是否含有大写字母
dow	是否含有小写字母
sym	是否含有特殊符号

func Regedit added in v0.2.1

func Regedit(c *Config)

配置项注入

func Rsa added in v0.2.61

func Rsa(byt, key []byte) ([]byte, error)

RSA签名 - RSA证书加密

byt	待加密内容
key	加密证书-公钥

func RsaSign added in v0.2.61

func RsaSign(data, prvkey []byte, hash crypto.Hash) ([]byte, error)

RSA签名算法 - 使用私钥对部分数据进行加密

data	待签名数据
prvkey	私钥
hash	签名规则

func SHA1

func SHA1(text string) string

计算字符串的SHA1值

func SHA1Byte

func SHA1Byte(data []byte) string

计算byte字节流的SHA1值

data	待计算的字节流

func SHA1File

func SHA1File(file string) string

计算文件的SHA1

file	文件的绝对路径

func SplitFloat32 added in v0.2.50

func SplitFloat32(s, sep string) []float32

将字符串切分为浮点数组

s	待切分字符串
sep	使用什么切分

func SplitFloat64 added in v0.2.50

func SplitFloat64(s, sep string) []float64

将字符串切分为浮点数组

s	待切分字符串
sep	使用什么切分

func SplitInt added in v0.2.50

func SplitInt(s, sep string) []int

将字符串切分为整形数组

s	待切分字符串
sep	使用什么切分

func SplitInt16 added in v0.2.50

func SplitInt16(s, sep string) []int16

将字符串切分为整形数组

s	待切分字符串
sep	使用什么切分

func SplitInt32 added in v0.2.50

func SplitInt32(s, sep string) []int32

将字符串切分为整形数组

s	待切分字符串
sep	使用什么切分

func SplitInt64 added in v0.2.50

func SplitInt64(s, sep string) []int64

将字符串切分为整形数组

s	待切分字符串
sep	使用什么切分

func SplitInt8 added in v0.2.50

func SplitInt8(s, sep string) []int8

将字符串切分为整形数组

s	待切分字符串
sep	使用什么切分

func SplitUint added in v0.2.50

func SplitUint(s, sep string) []uint

将字符串切分为整形数组

s	待切分字符串
sep	使用什么切分

func SplitUint16 added in v0.2.50

func SplitUint16(s, sep string) []uint16

将字符串切分为整形数组

s	待切分字符串
sep	使用什么切分

func SplitUint32 added in v0.2.50

func SplitUint32(s, sep string) []uint32

将字符串切分为整形数组

s	待切分字符串
sep	使用什么切分

func SplitUint64 added in v0.2.50

func SplitUint64(s, sep string) []uint64

将字符串切分为整形数组

s	待切分字符串
sep	使用什么切分

func SplitUint8 added in v0.2.50

func SplitUint8(s, sep string) []uint8

将字符串切分为整形数组

s	待切分字符串
sep	使用什么切分

func TimeDateAge

func TimeDateAge(str1 string) (uint, error)

计算传入日期到现在的时间差[单位-年,用于计算年龄] str1需为yyyy-mm-dd格式的时间才行

str1	用户出生日期

func TimeDateDiff

func TimeDateDiff(str1, str2 string) (time.Duration, error)

计算两个时间的时间差【第一个日期比第二个日期大则为正数】 str1和str2均为yyyy-mm-dd格式的时间才行

str1	日期参数1
str2	日期参数2

func TimeDiff

func TimeDiff(str1, str2 string) (time.Duration, error)

计算两个时间的时间差 str1和str2均为yyyy-mm-dd hh:mm:ss格式的时间才行

str1	日期时间参数1
str2	日期时间参数2

func ToFloat32

func ToFloat32(s string) float32

字符串转float32

s	string	待转换的字符串

func ToFloat64

func ToFloat64(s string) float64

字符串转float64

s	string	待转换的字符串

func ToInt

func ToInt(s string) int

字符串转int

s	string	待转换的字符串

func ToInt16 added in v0.2.50

func ToInt16(s string) int16

字符串转int16类型

s	string	待转换的字符串

func ToInt32 added in v0.2.50

func ToInt32(s string) int32

字符串转int32类型

s	string	待转换的字符串

func ToInt64

func ToInt64(s string) int64

字符串转int64

s	string	待转换的字符串

func ToInt8

func ToInt8(s string) int8

字符串转int8类型

s	string	待转换的字符串

func ToTime

func ToTime(date string) time.Time

时间字符串转为时间 为了便于其他程序处理,v0.2.50之后的版本此处返回值已调整为time.Time进行返回

date	待转换的时间字符串,支持格式为Go官方支持的时间格式【此处使用循环进行批量替换的形式】

func ToUint

func ToUint(s string) uint

字符串转uint

s	string	待转换的字符串

func ToUint16

func ToUint16(s string) uint16

字符串转uint16

s	string	待转换的字符串

func ToUint32 added in v0.2.50

func ToUint32(s string) uint32

字符串转int32类型

s	string	待转换的字符串

func ToUint64

func ToUint64(s string) uint64

字符串转uint64

s	string	待转换的字符串

func ToUint8

func ToUint8(s string) uint8

字符串转uint8

s	string	待转换的字符串

func UUID

func UUID() string

生成UUID

基于 `crypto/rand` 密钥库进行随机生成

func UnAes added in v0.2.14

func UnAes(src, key []byte) ([]byte, error)

AES解密

src	加密后的字符串
key	密钥标识

func UnBase64

func UnBase64(p string) string

对字符串进行encode64解码

p	待解码的字符串

func UnBase64Byte added in v0.2.14

func UnBase64Byte(p string) []byte

对字符串进行encode64解码

p	待解码的字符串

func UnBase64Raw

func UnBase64Raw(p string) string

对字符串进行encode64解码[去除填充解码,一般用于jwt]

p	待解码的字符串

func UnBase64RawByte added in v0.2.14

func UnBase64RawByte(p string) []byte

对字符串进行encode64解码[去除填充解码,一般用于jwt]

p	待解码的字符串

func UnDes added in v0.1.20

func UnDes(src, key []byte) ([]byte, error)

des解密函数

src	要解密的密文
key	密钥,和加密密钥相同,大小为8byte

func UnGz added in v0.2.62

func UnGz(str []byte) ([]byte, error)

字符串解压缩

func UnJwt

func UnJwt(key []byte, token string, stu any) error

带签名秘钥的JWT解密

key		签名秘钥
token	JWT字符串
stu		结构体形式的参数体

func UnJwtNoKey

func UnJwtNoKey(token string, stu any) error

JWTToken 无视秘钥进行解密

token	JWT token结构体
stu		JWT token解析出的数据

func UnRsa added in v0.2.61

func UnRsa(byt, key []byte) ([]byte, error)

RSA解密 此处使用PKCS1进行解密,若和JAVA对接的话,对方发过来的证书一般为PKCS8证书,需要使用以下命令进行转换 openssl rsa -in private_key_8.pem -out private_key_1.pem

byt	待解密信息
key	加密证书-私钥【pkcs1】

func UnRsaSign added in v0.2.61

func UnRsaSign(data, vsig, pubkey []byte, hash crypto.Hash) error

验证签名是否正确

data	待签名数据
vsign	已签名数据,用于验证是否正确
pubkey	公钥证书
hash	签名规则

func Url added in v0.3.1

func Url(base, target string) string

根据基URL获取当前URL

base	基础URL
target	待跳转URL

Types

type Config added in v0.2.1

type Config struct {
	DebugLog func(msg string, err error) // DEBUG日志记录
}

配置项信息

type UaInfo

type UaInfo struct {
	Mobile        bool   `json:"mobile"`         // 是否是移动设备
	Bot           bool   `json:"bot"`            // 是否是机器人程序
	Mozilla       string `json:"mozilla"`        // Mozilla版本
	Model         string `json:"model"`          // 手机型号
	Platform      string `json:"platform"`       // 所在平台
	OS            string `json:"os"`             // 操作系统
	EngineName    string `json:"engine_name"`    // 引擎名称
	EngineVersion string `json:"engine_version"` // 引擎版本
	BrowName      string `json:"brow_name"`      // 浏览器名称
	BrowVersion   string `json:"brow_version"`   // 浏览器版本
}

根据UA解析其中内容

func Ua2info

func Ua2info(user_agent_string string) UaInfo

根据UA获取详情信息

user_agent_string	UA拆分前的UA头

Jump to

Keyboard shortcuts

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