在Rust中将字符串转换为int吗?


183

注意:此问题包含1.0版之前的代码!答案是正确的。

要转换strint拉斯特,我可以这样做:

let my_int = from_str::<int>(my_str);

我知道如何将a转换String为an 的唯一方法int是获取其中的一部分,然后from_str像这样使用它:

let my_int = from_str::<int>(my_string.as_slice());

有没有一种方法可以直接将a转换Stringint


1
另请参见:stackoverflow.com/q/32381414/500207(非十进制)。
艾哈迈德·法西

2
有点明显,但是给所有在2014年以后发现此问题的人的注释,并想知道为什么from_str不在范围内,也不在序幕中。use std::str::FromStr;解决该问题。如果需要,可以从from_str获得更多信息。doc.rust-lang.org/std/str/trait.FromStr.html#tymethod.from_str
-

Answers:


254

您可以使用str::parse::<T>()方法直接将其转换为int 。

let my_string = "27".to_string();  // `parse()` works with `&str` and `String`!
let my_int = my_string.parse::<i32>().unwrap();

您可以使用上::<>图所示的turbofish运算符()指定要解析的类型,也可以通过显式类型注释:

let my_int: i32 = my_string.parse().unwrap();

如评论中所述,parse()返回Result。该结果将是一个Err作为类型指定如果字符串不能被解析(例如,字符串"peter"不能被解析为i32)。


35
请注意,parse返回一个Result,因此您需要适当地处理它以获得实际的整数类型。
Shepmaster
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.