想把系统里所有手机号处理成138****8888

zhouwei7682719 2020-09-09 09:52:59
某个测试账号登录系统后,里面所有显示手机号的地方格式都改成138****8888,其他账号正常显示手机号,各位大神,有没有科学的方式处理?
...全文
2886 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 版主 2020-09-10
  • 打赏
  • 举报
回复
你如何判断是测试用户的, 那就怎么处理显示方案。 照道理,这需要权限控制的, 但如果嫌麻烦,那就只增加一个if else 控制显示就是了。
rumlee 2020-09-10
  • 打赏
  • 举报
回复
用正则表达式替换一下就好了


String s = "13888888888";
System.out.println(s.replaceAll("([\\d]{3})([\\d]{4})([\\d]{4})", "$1****$3"));
by_封爱 2020-09-10
  • 打赏
  • 举报
回复
从数据库查询的地方下手 substring就行了.
晨易夕 2020-09-09
  • 打赏
  • 举报
回复
在所有查询手机号的接口上加上权限控制,根据用户权限来更改你的接口返回。
nicholastse1980 2020-09-09
  • 打赏
  • 举报
回复
直接在数据库里替换出来就行了
ManBOyyy 2020-09-09
  • 打赏
  • 举报
回复
什麼科學方式?無非就是判斷該用戶的字符串處理一下就行,截取前面三個數 +"****" +截取後面4個數字
zhouwei7682719 2020-09-09
  • 打赏
  • 举报
回复
系统都是用ajax调用接口,ApiController
wanghui0380 2020-09-09
  • 打赏
  • 举报
回复
给个例子,我懒得接入啥权限,我们就展示怎么在最后json序列化的时候替换东西。当然我只是展示,写的不是那么严谨。看明白自己集成 先给结果
引用
输入: var obj = new {num = "13800001"}; 输出:{"num":"我被替换了"}
很明显序列化被替换了 代码
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;


namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            JsonSerializerSettings jsonSerializerSettings=new JsonSerializerSettings();
    
            jsonSerializerSettings.ContractResolver=new myContractResolver();

            var obj = new {num = "13800001"};

            var str = JsonConvert.SerializeObject(obj,jsonSerializerSettings);

//            Console.WriteLine("Hello World!");
        }

         public class mystringformt:JsonConverter
         {
             public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
             {
                 string temp = (string) value;

                 writer.WriteValue("我被替换了");
                 
             }

             public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
             {
                 throw new NotImplementedException();
             }

             public override bool CanConvert(Type objectType)
             {
                 return objectType == typeof(string);
             }
         }

         public class myContractResolver : DefaultContractResolver
         {
             protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
             {
                 

                var b=  base.CreateProperty(member, memberSerialization);
                if(member.Name=="num")
                b.Converter=new mystringformt();
                return b;
             }
         }





    }
}
wanghui0380 2020-09-09
  • 打赏
  • 举报
回复
至于权限是一个故事,根据不同的权限用不同的jsonconvert的配置
wanghui0380 2020-09-09
  • 打赏
  • 举报
回复
又是没头没尾的需求。提问请带上下文,不然我们无从回答 1.什么查询手机号,你手机号在哪里?? 如果你说是数据库里某个字段,ok,你所有查询此表的时候替换。(sql里直接替换,db层查询给个可选参数,json序列化控制format,automapper映射时做手段都ok) 2.上面是特定的,如果你说俺就不知道手机号从哪里来,只要输出里面长得像手机号的都要处理,ok,加换个midware,拦截response,替换所有长的像的
快乐起航2020 2020-09-09
  • 打赏
  • 举报
回复
三元运算符
晨易夕 2020-09-09
  • 打赏
  • 举报
回复
引用 5 楼 zhouwei7682719 的回复:
Authorize权限吗? 更改接口的返回,是不是意味着我要去解析返回结果并替换手机号。
不在这里改那你在哪里改,前端?数据库?
zhouwei7682719 2020-09-09
  • 打赏
  • 举报
回复
引用 4 楼 晨易夕 的回复:
在所有查询手机号的接口上加上权限控制,根据用户权限来更改你的接口返回。
Authorize权限吗? 更改接口的返回,是不是意味着我要去解析返回结果并替换手机号。

62,242

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧