首次提交:初始化项目代码
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"regexp"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// 1、字符串反向引用脱敏 ReplaceAllString
|
||||
mobileRe := regexp.MustCompile(`(\d{3})\d{4}(\d{4})`)
|
||||
phone := "12311111111"
|
||||
// $$ 转义输出单个字面$
|
||||
res1 := mobileRe.ReplaceAllString(phone, "前缀$$ $1****$2 后缀")
|
||||
fmt.Println("1.ReplaceAllString 手机号脱敏+$转义:", res1)
|
||||
|
||||
// 命名捕获组搭配${name}格式
|
||||
nameRe := regexp.MustCompile(`姓名:(?P<name>[\p{Han}]+)`)
|
||||
userText := "姓名:王五"
|
||||
resName := nameRe.ReplaceAllString(userText, "用户${name}已登记")
|
||||
fmt.Println("命名捕获组替换:", resName)
|
||||
|
||||
// 2、字面量&常规替换核心对比(带捕获组,差异肉眼可见)
|
||||
litStr := "价格$100,优惠$20"
|
||||
numRe := regexp.MustCompile(`(\d+)`)
|
||||
res2Normal := numRe.ReplaceAllString(litStr, "数值$1")
|
||||
res2Lit := numRe.ReplaceAllLiteralString(litStr, "数值$1")
|
||||
fmt.Println("2.ReplaceAllString 解析捕获组$1:", res2Normal)
|
||||
fmt.Println("2.ReplaceAllLiteralString 纯字面$1:", res2Lit)
|
||||
|
||||
// 3、动态回调替换 ReplaceAllStringFunc
|
||||
priceText := "金额:10、20、50"
|
||||
res3 := numRe.ReplaceAllStringFunc(priceText, func(s string) string {
|
||||
val, _ := strconv.Atoi(s)
|
||||
return strconv.Itoa(val * 2)
|
||||
})
|
||||
fmt.Println("3.ReplaceAllStringFunc 数值翻倍:", res3)
|
||||
|
||||
// ---------------------- []byte 字节系列替换API ----------------------
|
||||
bytePhone := []byte("12311111111")
|
||||
// 4.ReplaceAll 字节版反向引用
|
||||
resByte1 := mobileRe.ReplaceAll(bytePhone, []byte("$1****$2"))
|
||||
fmt.Println("4.ReplaceAll 字节脱敏:", string(resByte1))
|
||||
|
||||
// 5.ReplaceAllLiteral 字节字面量演示
|
||||
byteSrc := []byte("积分30")
|
||||
resByte2 := numRe.ReplaceAllLiteral(byteSrc, []byte("分数$1"))
|
||||
fmt.Println("5.ReplaceAllLiteral 字节字面量:", string(resByte2))
|
||||
|
||||
// 6.ReplaceAllFunc 字节回调自定义逻辑
|
||||
bytePrice := []byte("标价5 标价15")
|
||||
resByte3 := numRe.ReplaceAllFunc(bytePrice, func(b []byte) []byte {
|
||||
val, _ := strconv.Atoi(string(b))
|
||||
return []byte(strconv.Itoa(val + 10))
|
||||
})
|
||||
fmt.Println("6.ReplaceAllFunc 字节数值加10:", string(resByte3))
|
||||
}
|
||||
Reference in New Issue
Block a user