如何从字符串中提取数字?编程新手求助
解决方案
Python 实现
正则表达式是提取这类数字最简洁的方式,代码如下:
import re x = "rtx2080gtx1050i8100...." # 匹配所有连续数字字符串 num_strings = re.findall(r'\d+', x) # 转换为整数列表 result = [int(num) for num in num_strings] print(result) # 输出: [2080, 1050, 8100]
r'\d+' 是正则表达式语法,代表匹配一个或多个连续数字;re.findall 会返回所有符合规则的子串,最后通过列表推导式将字符串转为整数即可。
JavaScript 实现
如果使用JavaScript,同样可以用正则快速实现:
const x = "rtx2080gtx1050i8100...."; const result = x.match(/\d+/g).map(Number); console.log(result); // 输出: [2080, 1050, 8100]
match(/\d+/g) 会返回所有匹配到的数字字符串数组,map(Number) 负责将每个字符串元素转为数字类型。
手动遍历实现(理解底层逻辑)
如果想搞清楚具体的执行过程,不依赖正则,可以手动遍历字符串提取数字:
x = "rtx2080gtx1050i8100...." result = [] current_num = "" for char in x: # 判断当前字符是否为数字 if char.isdigit(): current_num += char else: # 如果已经积累了数字字符串,就转为整数加入结果列表 if current_num: result.append(int(current_num)) current_num = "" # 处理字符串末尾可能剩余的数字 if current_num: result.append(int(current_num)) print(result) # 输出: [2080, 1050, 8100]
核心逻辑是逐个字符检查,积累连续的数字字符,遇到非数字时就将积累的数字转为整数存入结果,最后还要处理字符串末尾可能剩下的数字。
内容的提问来源于stack exchange,提问作者user20140113
相关产品推荐
相关产品推荐

