xxxxx_rust_sts 0.1.0

A collection of useful string and file utilities for Rust
Documentation
# String Utils RS


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

## 功能特性


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

## 安装


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

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

## 快速开始


```rust
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


#### 字符串清理和格式化


```rust
// 清理字符串两端的空白字符
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"
```

#### 文本分析


```rust
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);
```

#### 回文检查


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

#### 正则表达式


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

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

### FileUtils


#### 基本文件操作


```rust
// 读取文件
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();
```

#### 文件信息


```rust
// 检查文件是否存在
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 解析和格式化


```rust
// 解析 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 操作


```rust
// 获取嵌套值
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"),
]);
```

#### 结构体序列化


```rust
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();
```

## 运行示例


```bash
# 运行基本示例

cargo run --example basic_usage

# 运行测试

cargo test

# 运行文档测试

cargo test --doc
```

## 错误处理


库使用自定义错误类型 `StringUtilsError`:

```rust
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 处理工具
- 完整的测试覆盖