Node.js解析字符串:提取指定位置的数字数组
如何提取换行后、特定字符串前的数字组成数组?
待解析的字符串示例:
54766392632990,178.32.243.13,wfsdsfsdfs23432, 54766393632990,178.32.243.13,
需求是提取每一行中,位于换行符后、",178.32.243.13"之前的数字,最终组成数组[54766392632990,54766393632990]。下面给你几个常用编程语言的实现方案:
JavaScript 实现
核心思路是先按换行符分割字符串,再遍历每一行提取目标数字:
const inputStr = `54766392632990,178.32.243.13,wfsdsfsdfs23432, 54766393632990,178.32.243.13, `; // 按换行分割成数组,过滤掉空行 const lines = inputStr.split('\n').filter(line => line.trim() !== ''); // 遍历每行,提取目标数字 const result = lines.map(line => { // 找到目标分隔符的位置 const separatorIndex = line.indexOf(',178.32.243.13'); if (separatorIndex !== -1) { // 截取分隔符前的部分并转成数字 return Number(line.slice(0, separatorIndex)); } return null; // 处理不符合格式的行,这里可以根据需求调整 }).filter(num => num !== null); // 过滤掉无效结果 console.log(result); // 输出: [54766392632990, 54766393632990]
Python 实现
用类似的思路,分割行后提取目标内容:
input_str = """54766392632990,178.32.243.13,wfsdsfsdfs23432, 54766393632990,178.32.243.13, """ # 按换行分割,过滤空行 lines = [line.strip() for line in input_str.split('\n') if line.strip()] result = [] for line in lines: separator = ',178.32.243.13' if separator in line: # 分割字符串并取第一部分转成整数 num_str = line.split(separator)[0] result.append(int(num_str)) print(result) # 输出: [54766392632990, 54766393632990]
正则表达式通用方案(多语言适用)
如果想更灵活,也可以用正则匹配每一行的目标数字,比如在Python中:
import re input_str = """54766392632990,178.32.243.13,wfsdsfsdfs23432, 54766393632990,178.32.243.13, """ # 匹配每行开头到目标分隔符前的数字 pattern = re.compile(r'^(\d+),178\.32\.243\.13') matches = pattern.findall(input_str, re.MULTILINE) result = [int(num) for num in matches] print(result) # 输出: [54766392632990, 54766393632990]
这个正则的意思是:匹配每行开头的一串数字,后面紧跟",178.32.243.13",其中re.MULTILINE让^匹配每行的开头。
内容的提问来源于stack exchange,提问作者Andrey Radkevich
相关产品推荐
相关产品推荐

