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.交流群: 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交易參數有誤,該筆交易暫時無法完成,請聯繫商家解決

我要說說
網上賓友點評