Rust - как разбить строку по разделителю и взять только значение после 2 разделителя?
Необходимо читать строку из файла (это понятно как), разбивать ее по разделителю и вывести только значения после 2 разделителя. Можно ли это реализовать через split?
let _contents = fs::read_to_string(fname).expect("Should have been able to read the file");
let parts = _contents.split(",");
Ответы (1 шт):
Автор решения: free_ze
→ Ссылка
Не совсем очевидная постановка, но вот вам варианты.
- Если нужен третий элемент-подстрока, то после разделения берем нужный элемент последовательности с помощью nth:
let input = "some,line,of,text,with,delimiters".to_string();
let third_element: &str = input.split(",").nth(2).expect("...");
println!("{third_element}"); // -> "of"
- Если нужны значения-подстроки начиная с третьей (без разделителей), то пропускаем первые две методом skip, остальные можем собрать, например, в вектор:
let input = "some,line,of,text,with,delimiters".to_string();
let rest_elements: Vec<&str> = input.split(",").skip(2).collect();
for element in rest_elements {
print!("{element}"); // -> "oftextwithdelimiters"
}
- Если нужна подстрока из остатка текста после второго разделителя (включая остальные разделители), то делим входную строку на три части splitn, где первые две - по разделителю и остаток - уходит в третью, заключительную, которую можно извлечь с помощью last:
let input = "some,line,of,text,with,delimiters".to_string();
const PARTS_COUNT: usize = 3;
let rest_substring: &str = input.splitn(PARTS_COUNT, ",").last().expect("...");
println!("{rest_substring}"); // -> "of,text,with,delimiters"