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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 08:05:33