我目前使用的是这个
fn main() {
let a = "abc123";
let b = "1a2b3c";
println!("{}", a[0..1].chars().all(char::is_numeric));
println!("{}", b[0..1].chars().all(char::is_numeric));
}
Run Code Online (Sandbox Code Playgroud)
有没有更惯用和/或更简单的方法来做到这一点?
注意:该字符串保证非空且由 ASCII 字符组成。
phi*_*mue 11
如果确定它非空并且由ascii组成,则可以直接对字节(u8)进行操作:
a.as_bytes()[0].is_ascii_digit()
Run Code Online (Sandbox Code Playgroud)
或者
(b'0'..=b'9').contains(&a.as_bytes()[0])
Run Code Online (Sandbox Code Playgroud)
更一般的设置(在我看来,更惯用):
a.chars().next().unwrap().is_numeric()
Run Code Online (Sandbox Code Playgroud)
所有这一切看起来有点笨拙的原因是,可能会出现一些问题(在其他语言中很容易被忽视):
Option/ unwrap-land| 归档时间: |
|
| 查看次数: |
4672 次 |
| 最近记录: |