如何用Java阻止手机号码中间的四位数字?

如何用Java阻止手机号码中间的四位数字?,java,expression,Java,Expression,打印日志时,我想把电话号码和身份证的中间部分遮住。我不想更改每个实体类中的toString方法。是否有某种方法可以替换长字符串中的电话号码?您可以使用一个知道各个字段的敏感性的包装器来装饰正在记录的对象,从而获得一些成功 一个非常基本的例子 class NumberHidingDecorator { private final Object decorated; public NumberHidingDecorator(Object decorated) {

打印日志时,我想把电话号码和身份证的中间部分遮住。我不想更改每个实体类中的toString方法。是否有某种方法可以替换长字符串中的电话号码?

您可以使用一个知道各个字段的敏感性的包装器来装饰正在记录的对象,从而获得一些成功

一个非常基本的例子

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));

您使用的日志框架可能重复?我们使用logback框架。谢谢,但是我想在logger类中做一些事情,但不是在日志记录的地方,因为有很多实体需要修饰。