【问题标题】:How to split a string into the first character and the rest?如何将字符串拆分为第一个字符和其余字符?
【发布时间】:2022-06-20 08:16:15
【问题描述】:

这是我目前拥有的代码:

fn split_first_char(s: &str) -> Option<(char, &str)> {
    let mut char_indices = s.char_indices();
    let (_, c) = char_indices.next()?;
    let i = match char_indices.next() {
        Some((i, _)) => i,
        None => s.len(),
    };
    Some((c, s.split_at(i).1))
}

有没有更简单或内置的方法来做同样的事情?

【问题讨论】:

    标签: string rust


    【解决方案1】:

    我找到了另一个更优雅的解决方案:

    fn split_first_char(s: &str) -> Option<(char, &str)> {
        let mut chars = s.chars();
        match chars.next() {
            Some(c) => Some((c, chars.as_str())),
            None => None,
        }
    }
    

    fn split_first_char(s: &str) -> Option<(char, &str)> {
        let mut chars = s.chars();
        chars.next().map(|c| (c, chars.as_str()))
    }
    

    【讨论】:

      【解决方案2】:

      我不这么认为,但你可以缩短很多:

      fn split_first_char(s: &str) -> Option<(char, &str)> {
          s.chars().next().map(|c| (c, &s[c.len_utf8()..]))
      }
      

      【讨论】:

        【解决方案3】:

        从 Rust 1.50 开始,您可以使用 split_first() 来做您想做的事。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-07-25
          • 2022-09-27
          相关资源
          最近更新 更多