如何在数组中的数字之间获得逗号分隔



我遇到了初学者从使用正则表达式提取的数字中逗号分隔的麻烦。练习如下:

查找句子中的所有数字并将其打印为单个数组。如果句子没有数字;没有数字&";。尝试使用test()-方法进行检查。

这是我的结果:代码和结果的屏幕截图

var sentence = "5om3 wr173 w0rd5 u51n9 numb3r5"
function printDigits() {
var res = sentence.replace(/D/g, '');
console.log(res)
}
printDigits();

您可以spread作为最后一个数字来获得array,然后使用join()来添加这些逗号。(join使用,作为默认分隔符

作为后备,您可以使用OR||res的值设置为您喜欢的字符串

var sentence = "5om3 wr173 w0rd5 u51n9 numb3r5"
function printDigits() {
var res = [ ...sentence.replace(/D/g, '') ].join() || "No digits!";
console.log(res)
}
printDigits();

您可以通过将字符串转换为数组来获得逗号分隔,然后使用连接方法以逗号分隔连接

var sentence = "5om3 wr173 w0rd5 u51n9 numb3r5"
function printDigits() {
var res = sentence.replace(/D/g, '');
console.log(Array.from(res).join(','))
}
printDigits();

如果按照问题提示使用test(),则需要测试每个字符,而不是操纵字符串。

在longhand中,您可以迭代字符串本身,这里使用for。。。环路

function printDigits(str) {
const res = [];
for (const char of str) {
if (/d/.test(char)) {
res.push(char);
}
}
return res.length ? res.join(', ') : 'No digits!';
}
const sentence = '5om3 wr173 w0rd5 u51n9 numb3r5';
console.log(printDigits(sentence));
console.log(printDigits('This has no digits.'));

使用扩展语法将字符串转换为数组,然后使用数组filter()方法仅保留那些通过test()的字符,可以在一定程度上缩短这一点。

function printDigits(str) {
const res = [...str].filter((char) => /d/.test(char));
return res.length ? res.join(', ') : 'No digits!';
}
const sentence = '5om3 wr173 w0rd5 u51n9 numb3r5';
console.log(printDigits(sentence));
console.log(printDigits('This has no digits.'));

使用match代替replacing字符,后者返回基于正则表达式模式的数组。您甚至可以传入一个参数,指定是否要返回字符串或数字数组。

const sentence1 = '5om3 wr173 w0rd5 u51n9 numb3r5';
const sentence2 = 'This sentence has no digits';
function printDigits(sentence, type = 'str') {
const match = sentence.match(/d/g);
if (!match) return 'No digits';
return type === 'num' ? match.map(Number) : match;
}
console.log(printDigits(sentence1, 'num'));
console.log(printDigits(sentence1));
console.log(printDigits(sentence2));

相关内容

  • 没有找到相关文章

最新更新