xxxxx_rust_sts

Crates.ioxxxxx_rust_sts
lib.rsxxxxx_rust_sts
version0.1.0
created_at2025-06-30 05:41:38.853953+00
updated_at2025-06-30 05:41:38.853953+00
descriptionA collection of useful string and file utilities for Rust
homepage
repositoryhttps://github.com/yourusername/string-utils-rs
max_upload_size
id1731457
size24,923
(xdsxds007)

documentation

README

String Utils RS

一个提供字符串和文件处理实用工具的 Rust 库。

功能特性

  • 字符串处理: 清理、格式化、转换和验证字符串
  • 文本分析: 统计字符、单词、行数和句子数
  • 文件操作: 读取、写入、复制和删除文件
  • JSON 处理: 解析、格式化和验证 JSON 数据
  • 正则表达式: 文本替换和模式匹配
  • 命名转换: 支持驼峰命名、蛇形命名等格式转换

安装

在你的 Cargo.toml 中添加依赖:

[dependencies]
string-utils-rs = "0.1.0"

快速开始

use string_utils_rs::{StringUtils, FileUtils, JsonUtils};

fn main() {
    // 字符串处理
    let text = "  Hello, World!  ";
    let cleaned = StringUtils::clean_whitespace(text);
    println!("清理后: {}", cleaned); // 输出: Hello, World!

    // 文本分析
    let stats = StringUtils::analyze_text("Hello world! This is a test.");
    println!("字符数: {}, 单词数: {}", stats.char_count, stats.word_count);

    // 文件操作
    FileUtils::write_file("test.txt", "Hello, World!").unwrap();
    let content = FileUtils::read_file("test.txt").unwrap();
    println!("文件内容: {}", content);

    // JSON 处理
    let json_str = r#"{"name": "John", "age": 30}"#;
    let json = JsonUtils::parse_json(json_str).unwrap();
    println!("姓名: {}", json["name"]);
}

API 文档

StringUtils

字符串清理和格式化

// 清理字符串两端的空白字符
let cleaned = StringUtils::clean_whitespace("  hello  ");
// 结果: "hello"

// 移除所有空白字符
let result = StringUtils::remove_whitespace("Hello World!");
// 结果: "HelloWorld!"

// 转换为标题格式
let title = StringUtils::to_title_case("hello world");
// 结果: "Hello World"

// 转换为驼峰命名
let camel = StringUtils::to_camel_case("hello world");
// 结果: "helloWorld"

// 转换为蛇形命名
let snake = StringUtils::to_snake_case("Hello World");
// 结果: "hello_world"

文本分析

let stats = StringUtils::analyze_text("Hello world! This is a test.");
println!("字符数: {}", stats.char_count);
println!("单词数: {}", stats.word_count);
println!("行数: {}", stats.line_count);
println!("句子数: {}", stats.sentence_count);

回文检查

assert!(StringUtils::is_palindrome("racecar"));
assert!(StringUtils::is_palindrome("A man a plan a canal Panama"));
assert!(!StringUtils::is_palindrome("hello"));

正则表达式

// 替换文本
let result = StringUtils::replace_regex("Hello123World456", r"\d+", "NUMBER").unwrap();
// 结果: "HelloNUMBERWorldNUMBER"

// 提取数字
let numbers = StringUtils::extract_numbers("Hello123World456");
// 结果: [123, 456]

FileUtils

基本文件操作

// 读取文件
let content = FileUtils::read_file("input.txt").unwrap();

// 写入文件
FileUtils::write_file("output.txt", "Hello, World!").unwrap();

// 复制文件
FileUtils::copy_file("source.txt", "dest.txt").unwrap();

// 删除文件
FileUtils::delete_file("temp.txt").unwrap();

文件信息

// 检查文件是否存在
if FileUtils::file_exists("file.txt") {
    println!("文件存在");
}

// 获取文件信息
let info = FileUtils::get_file_info("file.txt").unwrap();
println!("文件大小: {} 字节", info.size);

// 获取人类可读的文件大小
let size = FileUtils::get_human_readable_size("file.txt").unwrap();
println!("文件大小: {}", size); // 例如: "1.5 MB"

// 获取文件扩展名
let ext = FileUtils::get_extension("file.txt");
// 结果: Some("txt")

// 获取文件名
let filename = FileUtils::get_filename("/path/to/file.txt");
// 结果: Some("file.txt")

JsonUtils

JSON 解析和格式化

// 解析 JSON
let json_str = r#"{"name": "John", "age": 30}"#;
let json = JsonUtils::parse_json(json_str).unwrap();

// 格式化 JSON
let formatted = JsonUtils::format_json(&json).unwrap();

// 紧凑格式
let compact = JsonUtils::compact_json(&json).unwrap();

// 验证 JSON
assert!(JsonUtils::is_valid_json(r#"{"name": "John"}"#));
assert!(!JsonUtils::is_valid_json(r#"{"name": "John"#));

JSON 操作

// 获取嵌套值
let json_str = r#"{"user": {"name": "John", "age": 30}}"#;
let json = JsonUtils::parse_json(json_str).unwrap();
let name = JsonUtils::get_value(&json, "user.name").unwrap();
// 结果: "John"

// 合并 JSON 对象
let json1 = serde_json::json!({"name": "John"});
let json2 = serde_json::json!({"age": 30});
let merged = JsonUtils::merge_json(&json1, &json2).unwrap();

// 创建 JSON 对象
let json = JsonUtils::create_object(&[
    ("name", "John"),
    ("age", "30"),
]);

结构体序列化

use serde::{Serialize, Deserialize};

#[derive(Serialize, Deserialize)]
struct Person {
    name: String,
    age: u32,
}

let person = Person {
    name: "John".to_string(),
    age: 30,
};

// 序列化
let json_str = JsonUtils::to_json_string(&person).unwrap();

// 反序列化
let parsed_person: Person = JsonUtils::from_json_string(&json_str).unwrap();

运行示例

# 运行基本示例
cargo run --example basic_usage

# 运行测试
cargo test

# 运行文档测试
cargo test --doc

错误处理

库使用自定义错误类型 StringUtilsError

use string_utils_rs::{Result, StringUtilsError};

fn process_file() -> Result<()> {
    let content = FileUtils::read_file("nonexistent.txt")?;
    Ok(())
}

贡献

欢迎提交 Issue 和 Pull Request!

许可证

MIT License

更新日志

0.1.0

  • 初始版本
  • 基本字符串处理功能
  • 文件操作工具
  • JSON 处理工具
  • 完整的测试覆盖
Commit count: 0

cargo fmt