1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/// 字符串相关操作
pub struct StrUtil;
impl StrUtil {
/// 将字符串按照指定分隔符进行分割
///
/// # 参数
/// * `str` - 需要分割的字符串切片
/// * `delimiter` - 用作分割依据的分隔符字符串
///
/// # 返回值
/// 返回一个包含分割后子字符串的向量,每个元素都是原字符串的切片引用
///
/// # 示例
/// ```
/// let result = split("hello,world,rust", ",");
/// assert_eq!(result, vec!["hello", "world", "rust"]);
/// ```
pub fn split<'a>(str: &'a str, delimiter: &str) -> Vec<&'a str> {
str.split(delimiter).collect()
}
/// 从字符串中移除指定的前缀
///
/// 如果字符串以指定前缀开头,则返回移除前缀后的字符串;
/// 否则返回原字符串的副本。
///
/// # 参数
/// * `str` - 需要处理的原始字符串
/// * `prefix` - 要移除的前缀字符串
///
/// # 返回值
/// 返回移除前缀后的字符串,如果不需要移除前缀则返回原字符串的副本
pub fn remove_prefix(str: &str, prefix: &str) -> String {
// 检查字符串是否以指定前缀开头
if str.starts_with(prefix) {
// 如果是,则返回移除前缀后的子字符串
return str[prefix.len()..].to_string();
}
// 如果不是以指定前缀开头,返回原字符串的副本
str.to_string()
}
/// 从字符串中移除指定的后缀
///
/// 如果字符串以指定后缀结尾,则返回移除该后缀后的字符串;
/// 否则返回原字符串的副本。
///
/// # 参数
/// * `str` - 需要处理的原始字符串
/// * `suffix` - 要移除的后缀字符串
///
/// # 返回值
/// 返回处理后的字符串。如果原字符串以指定后缀结尾,则返回移除后缀后的字符串;
/// 否则返回原字符串的副本。
pub fn remove_suffix(str: &str, suffix: &str) -> String {
// 检查字符串是否以指定后缀结尾
if str.ends_with(suffix) {
// 移除后缀并返回新字符串
return str[..str.len() - suffix.len()].to_string();
}
// 如果不以后缀结尾,返回原字符串副本
str.to_string()
}
/// 字符串反转
pub fn reverse(str: &str) -> String {
// 创建一个空的字符串用于存储反转后的结果
let mut reversed = String::new();
// 遍历字符串的每个字符
for c in str.chars() {
// 在每次迭代中,将当前字符添加到反转后的字符串的开头
reversed.insert(0, c);
}
// 返回反转后的字符串
reversed
}
}