rust用字符串+slice以外的遍历方式定位字符串string内首先出现的空格位置

字号+ 编辑: 国内TP粉 修订: 种花家 来源: 2023-09-11 我要说两句(0)

好多不学rust的人在网上喷rust,说rust代码丑,不是人看的。但实际大伙写习惯了javascript代码,自然就可以比较接受同一创始人发明的rust语法。本文主要介绍一个遍历字符串要用到的简单代码demo, 这个demo很容易忘记,留下此文以备查。

先上代码:

fn main() {

    let mut a = String::from("hello! my dear");

    let b = foo_function(&a);

    println!("{}", b);

    a.clear();

    println!("a:\"{}\"", a);
}

fn foo_function(s: &String) ->usize {
    let bytes =  s.as_bytes(); // 将传进来的a变量分解成byte类型以便遍历

    for (i, &item) in bytes.iter().enumerate() { // 把bytes分解成一组一组的tuple
        if item == b' ' {
            return i;
        }
    }

    return s.len();
}

控制台输出返回:

6
a:""

Process finished with exit code 0

代码当中用&String类型的参数,接收可变变量mut a的地址,这样避免下方a.clear()方法不能执行。

用for循环将byte类型的新变量用iter()迭代器逐步列举enumberate()

如果检查出列举的tuple(元组)类型里的&item含有空格b' ', 则返回这个tuple元祖的i值,实际上就是字符串坐标值。如果遍历没有逮到byte空格,则返回整个&String参数的长度。


阅完此文,您的感想如何?
  • 有用

    0

  • 没用

    0

  • 开心

    1

  • 愤怒

    0

  • 可怜

    0

1.如文章侵犯了您的版权,请发邮件通知本站,该文章将在24小时内删除;
2.本站标注原创的文章,转发时烦请注明来源;
3.Q群: 2702237 13835667

相关课文
  • mac开发接入微信公众号接口返回报错 cURL error 56: SSLRead() return error -9806

  • PHP的换行符是什么

  • pecl安装程序时报错Array and string offset access syntax with curly braces is no longer supported

  • 由于商家传入的H5交易参数有误,该笔交易暂时无法完成,请联系商家解决

我要说说
网上嘉宾点评