gpt4 book ai didi

javascript - 解析用箭头分隔的数字

转载 作者:行者123 更新时间:2023-11-30 11:01:16 24 4
gpt4 key购买 nike

我有以下输入数据 ["$245.00 ➝ $200.48 ", "➝", null, "", "$245.00 ➝ $200.48 ", "$247.00 ", "$210.00 ➝ €160.00 ", "€210.00 -> $160.00 ", "£210.00 -> £160.00 ", ]

我想按箭头拆分数据并通过数组返回数字。

我尝试了以下方法:

const data = ["$245.00 ➝ $200.48	", "➝", null, "", "$245.00 ➝ $200.48	", "$247.00	", "$210.00 ➝ €160.00	", "€210.00 -> $160.00	", "£210.00 -> £160.00	", ]

let getDigits = (numb) => {
let digits = +numb.replace(/[^\d.]/g, '');

return digits
}

let hasNumber = (s) => {
return /\d/.test(s);
}

let splitArrow = (s) => {
if (s === undefined || s === null || s === "" || !hasNumber(s)) {
return []
} else {
let arr = s.split(' -> ').join(',').split(' ➝ ').join(',').split(',')
return [getDigits(arr[0]), getDigits(arr[1])]
}
}


for (let i = 0; i < data.length; i++) {
console.log(splitArrow(data[i])[0])
console.log(splitArrow(data[i])[1])
console.log("#################################");
}

// wanted output:
/* 245.00
200.48
""
""
""
""
""
""
245.00
200.48 */

如您所见,我目前遇到了一个错误。 (见上文)

对我做错了什么有什么建议吗?

最佳答案

我会使用单个正则表达式来匹配 ([\d.]+) ➝ .*?([\d.]+)(数字,后跟 ,最后跟更多的数字)。如果正则表达式失败,则不返回任何内容,否则返回两个捕获组(包含匹配的数字字符):

const data = ["$245.00 ➝ $200.48	", "➝", null, "", "$245.00 ➝ $200.48	", "$247.00	", "$210.00 ➝ €160.00	", "€210.00 -> $160.00	", "£210.00 -> £160.00	", ]

const output = data.map((item) => {
if (!item || typeof item !== 'string') {
return [];
}
const match = item.match(/([\d.]+) (?:➝|->) \D*([\d.]+)/);
if (!match) {
return [];
}
return [match[1], match[2]];
});
console.log(output);

关于javascript - 解析用箭头分隔的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57606155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com