2
我想在Rust中創建一個子字符串。它從一個字符串的出現開始,並在字符串的末尾減去四個字符或某個字符處結束。如何獲取Rust中兩個模式之間的子串?
我的第一種方法是
string[string.find("pattern").unwrap()..string.len()-5]
因爲鏽病的字符串是有效的UTF-8,因此字節,而不是基於CHAR這是錯誤的。
我的第二個方法是正確的,但太冗長:
let start_bytes = string.find("pattern").unwrap();
let mut char_byte_counter = 0;
let result = line.chars()
.skip_while(|c| {
char_byte_counter += c.len_utf8();
return start_bytes > char_byte_counter;
})
.take_while(|c| *c != '<')
.collect::<String>();
是否有更簡單的方法來創建子?有沒有我找不到的標準庫的任何部分?
注意:你實際上並不甚至需要第一個'to_string()',所以你並不需要一個單一的分配:) –
@MatthieuM 。你是對的,謝謝。 :)更正 –