может строку типа "4.2 millions" преобразовать в int?
use std::num::ParseFloatError; fn main() { assert_eq!(parse_human_number("42").unwrap(), 42.0); assert_eq!(parse_human_number("4.2 millions").unwrap(), 4_200_000.0); assert_eq!(parse_human_number("5.3 thousands").unwrap(), 5_300.0); assert_eq!(parse_human_number("5300").unwrap(), 5_300.0); assert_eq!(parse_human_number("1.2 billions 2.3 millions 4.5 thousands 6.7").unwrap(), 1_202_304_506.7); } fn parse_human_number(mut s: &str) -> Result<f64, ParseFloatError> { let mut billions = 0.0; let mut millions = 0.0; let mut thousands = 0.0; let mut rest = 0.0; if let Some(i) = s.find("billions") { billions = s[..i].trim().parse()?; s = &s[i + "billions".len()..]; } if let Some(i) = s.find("millions") { millions = s[..i].trim().parse()?; s = &s[i + "millions".len()..]; } if let Some(i) = s.find("thousands") { thousands = s[..i].trim().parse()?; s = &s[i + "thousands".len()..]; } if !s.is_empty() { rest = s.trim().parse()?; } Ok(billions * 1_000_000_000.0 + millions * 1_000_000.0 + thousands * 1_000.0 + rest) }
Почему не подключить гтп чат Передав Преобразуй в число 42 мульонов. ?
Думал так сделать. но в итоге показалось что проще заставить копилот сделать что нужно
думаю подойдет, спасибо
Обсуждают сегодня