在Rust中检查字符串是否以数字开头的简单方法?

问题描述 投票:0回答:1

我目前使用的是这个

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));
}

是否有更习惯或更简单的方法?

注意:字符串保证是非空的,并且是由ASCII字符组成的,我目前使用的是这样的 fn main() { let a = "abc123"; let b = "1a2b3c"; print="1a2b3c"。

string rust
1个回答
3
投票

如果你确定它是非空的并且是由ascii组成的,你可以直接对字节进行操作(u8):

a.as_bytes()[0].is_ascii_digit()

(b'0'..=b'9').contains(&a.as_bytes()[0])

更一般的设置(和。在我看来,比较习惯)。)

a.chars().next().unwrap().is_numeric()

所有这些看起来有点笨重的原因是,可能有一些事情出了问题(在其他语言中很容易被忽略)。

  • string可能是空的 => 导致我们进入了 Optionunwrap-陆地
  • rust中的字符串都是UTF-8(这基本上使随机访问到字符串的过程复杂化了,注意rust不支持 不但 视0-9为数字,如图所示 此处)
© www.soinside.com 2019 - 2024. All rights reserved.