string util 笔记

本文分享了一系列Go语言中处理字符串的方法,包括检查前后缀、截取字符串、大小写转换、下划线与驼峰互转等实用技巧,并介绍了如何进行base64编码和解码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个主要为了收集对于string 字符串的一些操作,如果有更好的会进行替换。欢迎补充评论点赞。

放置/libs/utils/...

字符串前缀是否存在

/**
字符串前缀是否是prefix 是为true
 */
func HasPrefix(s, prefix string) bool  {
	return len(s)>=len(prefix) && s[0:len(prefix)]==prefix
}

字符串后缀是否存在

/**
字符串后缀是否为suffix 是为true
 */
func HasSuffix(s, suffix string) bool  {
	return len(s) >= len(suffix) && s[len(s)-len(suffix):]==suffix
}

从行首截取字符串

/**
从行首截取字符串
 */
func SubPrefix(s string, len int) string  {
	return string(s[len:])
}

首字母大写

func UpperFirst(str string) string {
	if len(str) < 1 || str[0] < 'a' || str[0] > 'z' {
		return str
	}

	strB := []byte(str)
	strB[0] = strB[0] - byte(32)
	return string(strB)
}

第二种

func Ucfirst(str string) string {
    for i, v := range str {
        return string(unicode.ToUpper(v)) + str[i+1:]
    }
    return ""
}

首字母小写

func LowerFirst(str string) string {
	if len(str) < 1 || str[0] < 'A' || str[0] > 'Z' {
		return str
	}

	strB := []byte(str)
	strB[0] = strB[0] + byte(32)
	return string(strB)
}

第二种

func Lcfirst(str string) string {
    for i, v := range str {
        return string(unicode.ToLower(v)) + str[i+1:]
    }
    return ""
}

下划线变为驼峰

func UnderlineToCamel(str string)string{
	strPortions := strings.Split(str, "_")
	for i := range strPortions{
		strB := []byte(strPortions[i])
		if strB[0] >= 'a' && strB[0] <= 'z'{
			strB[0] = strB[0] - byte(32)
			strPortions[i] = string(strB)
		}
	}
	return strings.Join(strPortions, "")
}

驼峰变为下划线

func CamelToUnderline(str string)string{
	strB := []byte{}
	strLen := len(str)
	for i := 0; i < strLen; i++ {
		if str[i] >= 'A' && str[i] <= 'Z' {
			if i > 0 {
				strB = append(strB, '_')
			}
			strB = append(strB, str[i] + byte(32))
		} else {
			strB = append(strB, str[i])
		}
	}
	return string(strB)
}

对字符串进行base64编码和解码

//base64 编码
func Base64Encode(value string) string {
	encode := base64.StdEncoding.EncodeToString([]byte(value))
	return encode
}

//base64解码
func Base64Decde(value string) ([]byte, error) {
	decode, err := base64.StdEncoding.DecodeString(value)
	return decode, err
}

字符串反转

package main
 
import (
    "fmt"
)
 
func main() {
    s := "hello,golang语言"
    fmt.Println(reverseString(s))
    fmt.Println(reverseString(reverseString(s)))
    // output: 言语gnalog,olleh
    // output: hello,golang语言
}
 
// 反转字符串
func reverseString(s string) string {
    runes := []rune(s)
    for from, to := 0, len(runes)-1; from < to; from, to = from+1, to-1 {
        runes[from], runes[to] = runes[to], runes[from]
    }
    return string(runes)
}

转载于:https://my.oschina.net/solate/blog/780571

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值