如何在Django上制作电话号码掩码?

Ere*_*ğlu 0 python django mask digits

假设我有一个电话号码:

05395042123

我想将其转换为以下格式:

xxxx xxx xx xx

我该怎么做?有人有功能吗?

Woj*_*tak 11

这很容易手工完成,只要你只有一种格式,这可能是最好的主意:

def phone_split(x):
  return ' '.join([x[0:4], x[4:7], x[7:9], x[9:]])
Run Code Online (Sandbox Code Playgroud)

编辑:

还有一种更普遍的方式:

def phone_split(x, format=[4,3,2,2]):
  parts = []
  reduce(lambda x, y: parts.append(x[:y]) or x[y:], format, x)
  return ' '.join(parts)
Run Code Online (Sandbox Code Playgroud)

它使用append()的副作用积累的结果和or满足拉姆达的一个班轮需求量的.

EDIT2:

我刚刚意识到你可能想在Django模板中使用它.如果是这种情况,您可能希望使用上面的代码来定义自定义模板标记并将其注册为简单过滤器.