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