【发布时间】:2017-02-15 09:10:59
【问题描述】:
我希望将以下格式或无效格式修正为有效的电话号码:
1 (639)-234-2323 => 6392342323
2 (042)-982-2234 => 0429822234
3 0974829-928 => 0974829928
4 +83246-983-34 => +832459834
5 +836(737)-898+78 => +83673789878
我可以使用此代码,如果给出某个 1-4,我可以得到正确的结果,但如果 5,我真的要疯了。
row[1] = row[1].gsub('(','').gsub(')','').gsub('-','').gsub(' ','')
此示例用于导入文件。所以你不能指望给用户一个提示。
我也对可能导入格式无效的记录持开放态度,但应该只将其格式化为可接受的电话号码(在任何地方给出括号或任何+ 符号在任何地方)。
编辑我想为我的5 给出的示例提供解决方案。因为如果不删除第一个,我无法在任何地方删除 + 标志。
EDIT 2我在评论部分再次询问我需要包含这样的电话格式:
6 (+65)92349577 => +6592348577
@WiktorStribiżew 建议使用以下正则表达式:s.gsub(/\A\(?(\+)|\D+/, '\1') 来自他的原始答案(已接受)
【问题讨论】:
-
使用
s.gsub(/\A(\+)|\D+/, '\1') -
抱歉,问题已更新。我想为我的
5给出的示例提供解决方案。因为如果不删除第一个,我无法在任何地方删除+标志。 -
@WiktorStribiżew 出色的答案.. 你能不能至少发布一个答案,这样我才能接受你的答案?感谢您的快速回复。
-
@DanielChristiany 抱歉问题含糊。我应该在
row[1] = row[1].gsub('(','').gsub(')','').gsub('-','').gsub(' ','')之前回答我的问题 -
然后把括号移到组外——
s.gsub(/\A\(?(\+)|\D+/, '\1')。