Haskell中如何从字符串提取所有数字?
提取字符串中连续数字的解决方案
直接定位字符串里的连续数字块,就能得到完整的数字序列,再转换成整数列表即可,两种常用方法如下:
方法一:正则表达式(简洁高效)
用\d+匹配一个或多个连续的数字字符,一次性提取所有目标序列:
import re s = "W2932,B23829,/,,,W29" # 提取所有连续数字字符串 num_strs = re.findall(r'\d+', s) # 转换为整数列表 result = [int(num) for num in num_strs] print(result) # 输出: [2932, 23829, 29]
方法二:手动遍历拼接
如果不想用正则,可通过遍历字符累积连续数字,遇到非数字时完成拼接并转成整数:
s = "W2932,B23829,/,,,W29" result = [] current_num = "" for char in s: 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) # 输出: [2932, 23829, 29]
核心区别在于,你之前的方法只提取单个数字字符,而这两种方法都是把连续的数字字符拼接成完整数字,最终得到你需要的列表。
内容的提问来源于stack exchange,提问作者I_hate_haskell
相关产品推荐
相关产品推荐

