【问题标题】:How to block the middle four digits of the mobile phone number with Java?如何用Java屏蔽手机号中间四位?
【发布时间】:2019-11-18 08:58:46
【问题描述】:

打印日志的时候,想把电话号码和身份证中间挡住。我不想更改每个实体类中的 toString 方法。有没有办法从长字符串中替换电话号码?

【问题讨论】:

标签: java expression


【解决方案1】:

您可能会通过使用包装器装饰您正在记录的对象来获得一些成功,该包装器了解各种字段的敏感性。

一个非常基本的例子...

class NumberHidingDecorator {

    private final Object decorated;

    public NumberHidingDecorator(Object decorated) {
        this.decorated = decorated;
    }

    @Override
    public String toString() {
        return decorated.toString().replaceAll("(\d{2})\d+(\d{2})", "$1...$2");
    }
}

并将装饰对象传递给您的日志记录工具

log.info("Invalid credit card {}", new NumberHidingDecorator(creditCard));

【讨论】:

  • 谢谢,但是我想在记录器类中做一些事情,而不是在记录的地方,因为有很多实体需要装饰。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-20
  • 2017-07-02
  • 1970-01-01
  • 2011-11-10
  • 2018-05-04
相关资源
最近更新 更多