golang跨平台字符串操作与处理插件库sttr的使用

Golang跨平台字符串操作与处理插件库sttr的使用

sttr

简介

sttr是一个命令行工具,可以快速对字符串执行各种转换操作。

安装

快速安装

curl -sfL https://raw.githubusercontent.com/abhimanyu003/sttr/main/install.sh | sh

Homebrew (macOS)

brew install abhimanyu003/sttr/sttr

Snap

sudo snap install sttr

Arch Linux

yay -S sttr-bin

Docker

docker run -it --rm -e TERM=xterm-256color ghcr.io/abhimanyu003/sttr:latest

Go

go install github.com/abhimanyu003/sttr@latest

使用示例

基本使用

# 交互式菜单
sttr

# 直接输入
sttr md5 "Hello World"

# 文件输入
sttr md5 file.txt
sttr base64-encode image.jpg

# 从其他处理器读取
echo "Hello World" | sttr md5
cat file.txt | sttr md5

# 将输出写入文件
sttr yaml-json file.yaml > file-output.json

链式操作

sttr md5 hello | sttr base64-encode

echo "Hello World" | sttr base64-encode | sttr md5

从URL获取数据并转换

curl https://jsonplaceholder.typicode.com/users | sttr json-yaml

支持的转换操作

编码/解码

  • ascii85-encode - 编码为Ascii85
  • ascii85-decode - 解码Ascii85文本
  • base32-decode - 解码Base32文本
  • base32-encode - 编码为Base32
  • base64-decode - 解码Base64文本
  • base64-encode - 编码为Base64
  • html-decode - HTML解码
  • html-encode - HTML编码
  • url-decode - URL解码
  • url-encode - URL编码

哈希计算

  • md5 - 计算MD5哈希
  • sha1 - 计算SHA1哈希
  • sha256 - 计算SHA256哈希
  • sha512 - 计算SHA512哈希

字符串转换

  • camel - 转换为camelCase
  • kebab - 转换为kebab-case
  • lower - 转换为小写
  • pascal - 转换为PascalCase
  • reverse - 反转文本
  • slug - 转换为slug-case
  • snake - 转换为snake_case
  • title - 转换为标题大小写
  • upper - 转换为大写

JSON/YAML转换

  • json-yaml - JSON转YAML
  • yaml-json - YAML转JSON
  • json - 格式化JSON

其他操作

  • count-chars - 计算字符数
  • count-words - 计算单词数
  • extract-emails - 提取电子邮件
  • extract-ip - 提取IP地址
  • extract-urls - 提取URL

完整示例

package main

import (
	"fmt"
	"os/exec"
)

func main() {
	// 示例1: 计算字符串的MD5哈希
	md5Cmd := exec.Command("sttr", "md5", "Hello World")
	md5Output, _ := md5Cmd.Output()
	fmt.Println("MD5 of 'Hello World':", string(md5Output))

	// 示例2: Base64编码
	base64Cmd := exec.Command("sttr", "base64-encode", "Hello World")
	base64Output, _ := base64Cmd.Output()
	fmt.Println("Base64 of 'Hello World':", string(base64Output))

	// 示例3: JSON格式化
	jsonCmd := exec.Command("sttr", "json", `{"name":"John","age":30}`)
	jsonOutput, _ := jsonCmd.Output()
	fmt.Println("Formatted JSON:", string(jsonOutput))

	// 示例4: 链式操作 - 先MD5再Base64
	chainCmd1 := exec.Command("sttr", "md5", "Hello World")
	chainCmd2 := exec.Command("sttr", "base64-encode")
	
	chainCmd2.Stdin, _ = chainCmd1.StdoutPipe()
	chainOutput, _ := chainCmd2.Output()
	
	fmt.Println("MD5 then Base64:", string(chainOutput))
}

特点

  1. 跨平台支持
  2. 丰富的字符串处理功能
  3. 支持管道操作
  4. 简单易用的命令行界面
  5. 高性能处理

sttr是一个功能强大且易于使用的字符串处理工具,特别适合开发人员在日常工作中快速处理各种文本转换任务。


更多关于golang跨平台字符串操作与处理插件库sttr的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于golang跨平台字符串操作与处理插件库sttr的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Golang跨平台字符串处理插件库sttr使用指南

sttr是一个强大的Go语言跨平台字符串操作库,它提供了丰富的字符串处理功能,可以方便地在不同操作系统上执行各种字符串转换和操作。

sttr库简介

sttr库的主要特点包括:

  • 跨平台支持(Windows/Linux/macOS)
  • 丰富的字符串操作功能
  • 简洁易用的API设计
  • 高性能处理

安装sttr

go get github.com/abdfnx/sttr

基本使用示例

1. 字符串基本操作

package main

import (
	"fmt"
	"github.com/abdfnx/sttr"
)

func main() {
	// 字符串反转
	reversed := sttr.Reverse("hello")
	fmt.Println(reversed) // 输出: olleh

	// 字符串大写
	upper := sttr.UpperCase("hello")
	fmt.Println(upper) // 输出: HELLO

	// 字符串小写
	lower := sttr.LowerCase("HELLO")
	fmt.Println(lower) // 输出: hello
}

2. 编码转换

func encodingExamples() {
	// Base64编码
	encoded := sttr.Base64Encode("hello")
	fmt.Println(encoded) // 输出: aGVsbG8=

	// Base64解码
	decoded, _ := sttr.Base64Decode("aGVsbG8=")
	fmt.Println(decoded) // 输出: hello

	// URL编码
	urlEncoded := sttr.URLEncode("hello world")
	fmt.Println(urlEncoded) // 输出: hello%20world

	// URL解码
	urlDecoded, _ := sttr.URLDecode("hello%20world")
	fmt.Println(urlDecoded) // 输出: hello world
}

3. 哈希计算

func hashExamples() {
	// MD5哈希
	md5Hash := sttr.MD5("hello")
	fmt.Println(md5Hash) // 输出: 5d41402abc4b2a76b9719d911017c592

	// SHA256哈希
	sha256Hash := sttr.SHA256("hello")
	fmt.Println(sha256Hash) // 输出: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
}

4. 高级字符串处理

func advancedStringExamples() {
	// 提取JSON字段
	jsonStr := `{"name":"John","age":30}`
	name, _ := sttr.JSONField(jsonStr, "name")
	fmt.Println(name) // 输出: John

	// 字符串排序
	sorted := sttr.SortLetters("hello")
	fmt.Println(sorted) // 输出: ehllo

	// 移除重复字符
	unique := sttr.RemoveDuplicates("hello")
	fmt.Println(unique) // 输出: helo
}

5. 命令行工具集成

sttr也可以很方便地集成到命令行工具中:

package main

import (
	"fmt"
	"github.com/abdfnx/sttr"
	"os"
)

func main() {
	if len(os.Args) < 3 {
		fmt.Println("Usage: sttr <command> <input>")
		return
	}

	command := os.Args[1]
	input := os.Args[2]

	switch command {
	case "reverse":
		fmt.Println(sttr.Reverse(input))
	case "upper":
		fmt.Println(sttr.UpperCase(input))
	case "lower":
		fmt.Println(sttr.LowerCase(input))
	case "base64":
		fmt.Println(sttr.Base64Encode(input))
	default:
		fmt.Println("Unknown command:", command)
	}
}

性能考虑

sttr在设计时考虑了性能因素,对于大数据量的字符串处理,建议:

  1. 复用缓冲区
  2. 对于多次操作,考虑链式调用
  3. 避免不必要的字符串转换
func performanceExample() {
	// 链式操作示例
	result := sttr.Process("Hello World").
		Reverse().      // dlroW olleH
		LowerCase().   // dlrow olleh
		RemoveSpaces() // dlrowolleh
	
	fmt.Println(result.String())
}

错误处理

sttr中的一些操作可能会返回错误,建议始终检查错误:

func errorHandlingExample() {
	// Base64解码可能失败
	decoded, err := sttr.Base64Decode("invalid base64")
	if err != nil {
		fmt.Println("Decode error:", err)
		return
	}
	fmt.Println(decoded)
}

总结

sttr是一个功能强大且易于使用的Go语言字符串处理库,特别适合需要跨平台支持的场景。它提供了从基本字符串操作到复杂编码转换的各种功能,可以显著提高开发效率。

更多高级功能和详细文档可以参考sttr的GitHub仓库:https://github.com/abdfnx/sttr

回到顶部