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}