[牛人杂谈] 如何更灵活的从字符串中提取数字

[复制链接]
3015|29
belindagraham 发表于 2025-9-19 11:26 | 显示全部楼层
C 标准库提供了多个字符串转数字的函数
timfordlare 发表于 2025-9-19 13:40 | 显示全部楼层
逐字符解析              
yorkbarney 发表于 2025-9-19 14:40 | 显示全部楼层
使用 sscanf 函数              
mollylawrence 发表于 2025-9-19 21:04 | 显示全部楼层
strtod转换。              
wilhelmina2 发表于 2025-9-20 10:16 | 显示全部楼层
直接操作指针              
sdCAD 发表于 2025-9-20 10:48 | 显示全部楼层
strtol/strtod              
bartonalfred 发表于 2025-9-20 11:21 | 显示全部楼层
strtod(const char *str, char **endptr):类似strtol,可获取未转换部分。
hearstnorman323 发表于 2025-9-20 11:50 | 显示全部楼层
固定分隔符的字符串              
tifmill 发表于 2025-9-20 12:43 | 显示全部楼层
#include <stdio.h>

void extract_with_sscanf() {
    char str[] = "Temp:25.5C,Humidity:60%";
    float temp;
    int humidity;

    if (sscanf(str, "Temp:%fC,Humidity:%d%%", &temp, &humidity) == 2) {
        printf("Temperature: %.1f\n", temp);
        printf("Humidity: %d\n", humidity);
    } else {
        printf("Extract failed!\n");
    }
}
kkzz 发表于 2025-9-20 15:22 | 显示全部楼层
标准库              
ingramward 发表于 2025-9-21 14:56 | 显示全部楼层
使用sscanf              
爱丽丝的梦 发表于 2025-9-23 15:04 | 显示全部楼层
可使用正则表达式,通过匹配数字模式灵活提取。如 Python 中 re 模块的 findall (),用 r'\d+' 提取整数,r'-?\d+.?\d*' 提取正负整数及小数。还能指定提取范围,兼顾不同格式,适配多样字符串场景,比固定分割更灵活。
灰色与青 发表于 2025-10-5 16:06 | 显示全部楼层
可利用正则表达式匹配数字模式(如整数、小数、正负号),灵活提取任意字符串中的数字。例如 Python 用 re.findall (r'-?\d+.?\d*', s),能匹配正负整数、小数。也可遍历字符,判断是否为数字或小数点,组合成数,按需处理格式,适配不同场景,兼顾简洁与灵活性。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部