如何使用Twig实现兼容带+号的通用电话号码格式化?
Twig电话号码通用格式化方案
可以通过**区分号码前缀(是否带+)**来实现两种格式的统一处理,直接用Twig内置函数就能完成,不需要额外扩展:
完整代码实现
{% set rawPhone = store.phones['phone_store'] %} {% set formattedPhone = '' %} {% if rawPhone starts with '+' %} {# 处理带+号的号码:分离+、前3位国家码、剩余数字按两位分割 #} {% set countryCode = rawPhone|slice(1, 3) %} {% set remainingDigits = rawPhone|slice(4) %} {% set splitRemaining = remainingDigits|split('', 2)|join(' ') %} {% set formattedPhone = '+ ' ~ countryCode ~ ' ' ~ splitRemaining %} {% else %} {# 处理纯10位数字:保持原有的两位分割逻辑 #} {% set splitPhone = rawPhone|split('', 2)|join(' ') %} {% set formattedPhone = splitPhone %} {% endif %} {# 输出结果 #} {{ formattedPhone }}
效果验证
- 输入
0600000000→ 输出:06 00 00 00 00(符合原有需求) - 输入
+336000000→ 输出:+ 336 00 00 00(符合预期格式)
灵活调整说明
如果你的带+号号码的国家码长度不是3位(比如+1开头的北美号码),只需修改slice(1, 3)中的第二个参数即可,例如国家码是2位就改成slice(1, 2),剩余数字的起始位置对应改成slice(3)即可。
内容的提问来源于stack exchange,提问作者Kimako
相关产品推荐
相关产品推荐

