【发布时间】:2021-09-22 10:18:46
【问题描述】:
我知道这听起来像是一个新手问题,但我很难尝试使循环工作。
我正在使用 Julia 语言创建一个简单的正则表达式,用于检查电话号码是否有效并根据代码区域返回该号码的资产。以下是详细信息:
1-用户输入电话号码;
2-Regex 测试它是否是一个有效数字;
3- 解析并检查区号是否存在于字典值中。如果是,那么它应该返回拥有该值的键。否则应该打印一条简单的消息,说明区号不存在。
问题是:循环尽可能长,每次在字典中检查值时打印该值是否可用。休息无济于事:一旦它得到第一次检查,它就会停止。
然后我注意到我必须将最后的打印语句从循环中取出,甚至可能分配一个变量来获取复制的值,但它仍然会用最后一个“数字不存在”结果覆盖。
如何重写此代码以使其正常工作?
regexTel = r"^(\+55)?[\s]?\(?(\d{2})?\)?[\s-]?(9?\d{4}[\s-]?\d{4})$"
areaCode = Dict("City A"=> [68],
"City B"=> [82], [...] (and so on)
print("Type the phone number:\n")
telNum = readline()
validTel = (match(regexTel, telNum))
fnlAreaCd = parse(Int32, validTel[2])
for (cityCode, availbCode) in areaCode
if fnlAreaCd in availbCode
println("Phone number: ", validTel[3], "\n",
"Area code: ", fnlAreaCd, "\n",
"City: ", cityCode)
else
println("Area code doesn't exist")
end
end
【问题讨论】:
-
与问题没有直接关系,但我不会在这里使用正则表达式。因为这意味着如果用户输入了正确的数字但分隔符错误,即使用户正确键入了数字,您也不会识别电话号码。相反,我会只保留数字并检查其中有 10 个。
标签: regex loops dictionary for-loop julia