我从Microsoft下载了一个脚本,它允许我们取一个字符串并将其转换为友好格式,以显示在用户配置文件中。
原始字符串为tel:+441234123456;ext=3456
。
我需要做的是将其转换为英国友好格式,以便转换后的字符串为01234 123456
。
我认为我需要采取的步骤是:
tel:+44
并替换为0. ;ext=3456
有一个类似的过程,但对于美国建议,不幸的是,不知道正则表达式,这略微超过我的头!
$tel = $LineURI -replace 'tel:(\+1)([2-9]\d{2})([2-9]\d{2})(\d{4});ext=\d{4}','$1 ($2) $3-$4;'
答案 0 :(得分:2)
这是一种使用多个-replace
的方式。以某些性能为代价来简化操作:
$tel = $LineURI-replace 'tel:\+\d\d','0' -replace ';.+' -replace '(^.{5})','$1 '
答案 1 :(得分:1)
单个正则表达式就足够了:
PS C:\> 'tel:+441234123456;ext=3456' -replace '^tel:\+\d{2}(\d{4})(\d+);.*$', '0$1 $2'
01234 123456
正则表达式细分:
^tel:\+\d{2}
匹配文字tel:+
,后跟字符串开头的两位数字(^
)。(\d{4})
匹配四个后续数字。括号将匹配分组,以便在替换中将其引用为$1
。(\d+)
匹配上述后续数字的最长序列,但至少有一位数。这也按括号分组,以便在替换中引用它$2
。;.*$
匹配以分号开头的字符串的剩余部分。