【发布时间】:2019-01-30 10:01:02
【问题描述】:
所以我在 freecodecamp.org 上通过制作电话检查器的算法来练习 javascript。当只有提供的电话号码是一串数字时,我成功检查了它。现在我被卡住了,不知道如何检查提供的电话号码是否包含诸如“sixnineone”之类的词。所以我想将其拆分为“六九一”或将它们转换为带有数字对象数组的“691”。
问题出在这里:
我试图通过网站获得一些提示,但他们只解决了我不太了解的正则表达式的问题。
这是我所做的:
function telephoneCheck(str) {
let phoneNum = str.toLowerCase().replace(/[^1-9a-z]/g, "");
let numbers = [
{0: "o"},
{1: "one"},
{2: "two"},
{3: "tree"},
{4: "four"},
{5: "five"},
{6: "six"},
{7: "seven"},
{8: "eight"},
{9: "nine"}
];
if (phoneNum.match(/[1-9]/)) {
phoneNum = phoneNum.split('')
if (phoneNum.length === 10) {
phoneNum.unshift(1);
}
for (let i = 0; i < phoneNum.length; i++) {
phoneNum[i] = Number(phoneNum[i]);
}
if (phoneNum.length === 11 && phoneNum[0] === 1) {
return true;
} else {
return false;
}
}
if (phoneNum.match(/[a-z]/)) {
console.log(phoneNum);
}
}
console.log(telephoneCheck("sixone"));
在问题的解决方案中,据说唯一的解决方案是他们的解决方案,但如果我认为是正确的,那么可能还有另一个解决方案。
【问题讨论】:
-
当然,通常有多种方法可以解决这样的问题。这里有一个实际的问题,还是……?
-
我的问题是,如果数组包含单词和数字中的数字,我不知道如何拆分:“one7eightsix9tree”。我想拆分它以转换“一”、“八”、“六”、“树”,这要归功于数字数组的对象。
标签: javascript regex