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

不使用内置函数实现字符串转整数:求更优实现方案

更优雅的字符串转整数实现方案

这里有几个优化后的实现,解决你原代码中重复逻辑、负数处理繁琐的问题:

方案一:统一符号与数字处理(原生循环)

这个方案将符号判断和数字计算分离,避免重复代码,逻辑更清晰:

private static int StringToNumber(string str)
{
    int sign = 1;
    int startIndex = 0;

    // 处理负号
    if (str[0] == '-')
    {
        sign = -1;
        startIndex = 1;
    }

    int number = 0;
    for (int i = startIndex; i < str.Length; i++)
    {
        number = number * 10 + (str[i] - '0');
    }

    return number * sign;
}

优势:

  • 消除了原代码中两个重复的循环分支,符合DRY原则
  • 负数处理更直接:先记录符号,最后统一应用,避免了原代码中continue跳过负号后还要调整数值的繁琐逻辑
  • 代码结构更清晰,易读易维护

方案二:使用LINQ简化实现

如果项目允许使用LINQ,可以用更紧凑的写法:

private static int StringToNumber(string str)
{
    var sign = str.StartsWith('-') ? -1 : 1;
    var digits = str.StartsWith('-') ? str.Skip(1) : str;

    return digits.Aggregate(0, (current, c) => current * 10 + (c - '0')) * sign;
}

优势:

  • 用三元表达式一行完成符号判断和数字范围截取
  • 借助Aggregate方法将字符序列直接累加成整数,代码简洁紧凑
  • 保留了逻辑的可读性,没有过度简化

原代码的可优化点

你的原实现存在几个可以改进的地方:

  • 两个分支重复了循环逻辑,增加了维护成本
  • 负数处理时先累加再乘10的逻辑,导致最后需要额外除以10,容易出错且不够直观

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 04:42:54