You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust中解析字符串转数字时,如何让以0开头的字符串返回-1?

Rust 解析数字时排除以0开头的字符串

要实现仅解析不以0开头(或仅单独0)的字符串为数字,否则返回-1,可以先对字符串做前缀检查,再执行解析:

核心逻辑

  • 若字符串长度大于1且以'0'开头,直接返回-1(避免"01""001"这类被解析为1)
  • 否则尝试将字符串解析为数字,解析失败时也返回-1

代码实现

fn parse_valid_num(s: &str) -> i32 {
    // 过滤长度>1的前置0字符串
    if s.len() > 1 && s.starts_with('0') {
        return -1;
    }
    // 解析数字,失败返回-1
    s.parse().unwrap_or(-1)
}

// 测试验证
fn main() {
    assert_eq!(parse_valid_num("32"), 32);
    assert_eq!(parse_valid_num("28"), 28);
    assert_eq!(parse_valid_num("01"), -1);
    assert_eq!(parse_valid_num("001"), -1);
    assert_eq!(parse_valid_num("0"), 0); // 单独的0默认允许,若需禁用可修改判断条件
    assert_eq!(parse_valid_num("abc"), -1); // 非法字符解析失败返回-1
}

自定义调整

如果需求中单独的"0"也需要返回-1,只需把判断条件修改为:

if s.starts_with('0') {
    return -1;
}

内容的提问来源于stack exchange,提问作者Zullu Balti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 03:25:28