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

我要說說
網上賓友點評