当前位置: 首页 > news >正文

C++ 字符串处理5-手机号邮箱如何脱敏处理

  • 1. 关键词
  • 2. strutil.h
  • 3. strutil.cpp
  • 4. 测试代码
  • 5. 运行结果
  • 6. 源码地址

1. 关键词

关键词:

C++ 字符串处理 分割字符串 连接字符串 跨平台

应用场景:

有些重要信息需要保密,比如手机号、邮箱等,如何在不影响用户阅读的情况下,将这些信息脱敏处理,以保障用户的隐私安全。

2. strutil.h

#pragma once#include <string>namespace cutl
{/*** @brief Desensitizing a string by replacing some characters with '*'.** @param str the string to be desensitized.* @return std::string the desensitized string.*/std::string desensitizing(const std::string &str);
} // namespace cutl

3. strutil.cpp

#include <cctype>
#include <algorithm>
#include "strutil.h"namespace cutl
{// 字符串脱敏处理std::string desensitizing(const std::string &str){std::string result;// 只打印前1/4和后1/4的内容,中间用*表示if (str.empty()){result = "";}else if (str.length() == 1){result = "*";}else if (str.length() == 2){result = str.substr(0, 1) + std::string(str.length() - 1, '*');}else if (str.length() <= 6){result = str.substr(0, 2) + std::string(str.length() - 2, '*');}else if (str.length() < 10){result = str.substr(0, 2) + std::string(str.length() - 4, '*') + str.substr(str.length() - 2, 2);}else if (str.length() < 16){// 长度控制在最长12位,中间×不超过6auto startCount = (str.length() - 6) > 6 ? 6 : (str.length() - 6);result = str.substr(0, 3) + std::string(startCount, '*') + str.substr(str.length() - 3, 3);}else{// 长度控制在最长12位result = str.substr(0, 4) + std::string(4, '*') + str.substr(str.length() - 4, 4);}return result;}
} // namespace cutl

4. 测试代码

#include "common.hpp"
#include "strutil.h"void TestDesensitizing()
{PrintSubTitle("desensitizing");std::string password = "2515774";std::cout << "password: " << cutl::desensitizing(password) << std::endl;std::string phone = "18500425678";std::cout << "phone: " << cutl::desensitizing(phone) << std::endl;
}

5. 运行结果

-------------------------------------------desensitizing--------------------------------------------
password: 25***74
phone: 185*****678

6. 源码地址

更多详细代码,请查看本人写的C++ 通用工具库: common_util, 本项目已开源,代码简洁,且有详细的文档和Demo。

相关文章:

C++ 字符串处理5-手机号邮箱如何脱敏处理

1. 关键词2. strutil.h3. strutil.cpp4. 测试代码5. 运行结果6. 源码地址 1. 关键词 关键词&#xff1a; C 字符串处理 分割字符串 连接字符串 跨平台 应用场景&#xff1a; 有些重要信息需要保密&#xff0c;比如手机号、邮箱等&#xff0c;如何在不影响用户阅读的情况下…...

【lesson8】云备份服务端完整版代码

文章目录 util.hppconfig.hpphot.hppdata.hppserver.hppserver.ccMakefilecloud.conf util.hpp #pragma once #include <iostream> #include <fstream> #include <string> #include <vector> #include <sys/stat.h> #include <unistd.h> …...

AI办公自动化:kimi批量搜索提取PDF文档中特定文本内容

工作任务&#xff1a;PDF文档中有资料来源这一行&#xff0c;比如&#xff1a; 资料来源&#xff1a;moomoo tech、The Information、Bloomberg、Reuters&#xff0c;浙商证券研究所 数据来源&#xff1a;CSDN、浙商证券研究所 数据来源&#xff1a;CSDN、arXiv、浙商证券研…...

基于C#开发web网页管理系统模板流程-总集篇

第一篇 基于C#开发web网页管理系统模板流程-登录界面和主界面_c#的网页编程-CSDN博客 第二篇 基于C#开发web网页管理系统模板流程-主界面管理员录入和编辑功能完善_c#网页设计-CSDN博客 第三篇 基于C#开发web网页管理系统模板流程-主界面管理员入库和出库功能完善_c#web程序设计…...

什么是DMZ?路由器上如何使用DMZ?

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 DMZ 📒🚀 DMZ的应用场景💡 路由器设置DMZ🎈 注意事项 🎈⚓️ 相关链接 ⚓️📖 介绍 📖 在网络管理中,DMZ(Demilitarized Zone,隔离区)是一个特殊的网络区域,常用于将公共访问和内部网络隔离开来。DMZ功能允许…...

【bugfix】解决Redis缓存键清理问题

前言 在Spring Boot应用中集成Redis作为缓存存储时&#xff0c;合理配置RedisTemplate是确保数据正确存储和检索的关键。本文将通过对比分析一段初始存在问题的Redis配置代码及其修正后的版本&#xff0c;探讨如何正确处理Redis键前缀&#xff0c;以避免清理缓存时遇到的问题。…...

泛微开发修炼之旅--15后端开发连接外部数据源,实现在ecology系统中查询其他异构系统数据库得示例和源码

文章链接&#xff1a;15后端开发连接外部数据源&#xff0c;实现在ecology系统中查询其他异构系统数据库得示例和源码...

弹幕逆向signature、a_bogus

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 本文章未经许可禁止转载&a…...

jEasyUI 使用标记创建树形菜单

jEasyUI 使用标记创建树形菜单 jEasyUI 是一个基于 jQuery 的用户界面插件库&#xff0c;它提供了一系列的组件&#xff0c;用于快速构建网页用户界面。其中&#xff0c;树形菜单&#xff08;Tree Menu&#xff09;是 jEasyUI 提供的一个非常实用的组件&#xff0c;它可以帮助…...

IT人的拖延——拖是因为不想离开“舒适区”?

人都是求“稳”的,在一个区域内呆了很久,也很舒适了,如果冒险离开进入未知的区域,万一结果不好怎么办?万一自己不适合怎么办?万一这个区域有着自己难以忍受的东西怎么办?这些对未知区域的恐惧感让我们在面对应该要做的事情时,不自觉地又拖延了起来。比如,我们在面临需…...

JUnit 5学习笔记

JUnit 5 学习笔记 1.JUnit5的改变2.JUnit5常用注解及测试2.1 DisplayName/Disabled/BeforeEach/AfterEach/BeforeAll/AfterAll2.2 Timeout2.3 RepeatedTest 3.断言3.1 简单断言3.2 数组断言3.3 组合断言3.4 异常断言3.5 超时断言3.6 快速失败 4.前置条件5.嵌套测试6.参数化测试…...

西格玛 ------ 第18个希腊字母学习

名词解释 在数学中&#xff0c;我们把∑作为求和符号使用&#xff0c;用小写字母σ&#xff0c;表示标准差。 ∑符号表示求和&#xff0c;读音为sigma&#xff0c;英文意思为Sum&#xff0c;Summation&#xff0c;汉语意思为“和”“总和”。 例1 公式使用说明&#xff1a;…...

【C语言】assert.h——断言

文章目录 主要内容调试和发布模式使用示例用法总结与注意事项 断言是一种用于在程序执行过程中进行调试的工具&#xff0c;能够帮助开发者验证程序的某些假设是否为真。如果断言失败&#xff0c;程序会终止&#xff0c;并输出一个错误消息&#xff0c;通常包含出错的文件名和行…...

HTML静态网页成品作业(HTML+CSS)—— 零食商城网页(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…...

虚函数机制-动态绑定的应用

虚函数使得程序在运行的时候根据指针指向对象的类型来确定调用哪个函数。 下图中&#xff1a;都为静态绑定。因为在编译器就确定了可以调用的函数 此时当基类指针指向派生类对象时&#xff0c;因为没有virtual关键字&#xff0c;所以在编译阶段就根据指针类型确定了要指向的函…...

MOS开关电路应用于降低静态功耗

本文主要讲述MOS开关电路的应用,过了好久突然想整理一下&#xff0c;有错误的地方请多多指出&#xff0c;在做电池类产品&#xff0c;需要控制产品的静态功耗&#xff0c;即使让芯片进入休眠状态&#xff0c;依旧功率很大&#xff0c;所以在电路中加一组软开关&#xff0c;防止…...

【每日刷题】Day65

【每日刷题】Day65 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. LCR 175. 计算二叉树的深度 - 力扣&#xff08;LeetCode&#xff09; 2. 序列找数_牛客题霸_牛客网…...

Oracle数据库连接并访问Microsoft SQL Server数据库

Oracle数据库连接并访问Microsoft SQL Server数据库 说明&#xff1a;  1.实际开发中&#xff0c;Oracle数据库与SQLServer数据库之间可能需要相互进行访问&#xff0c;方便业务数据抽取&#xff0c;编写视图及表等操作。  2.SQLServer访问Oracle数据库配置相对较为简单&…...

SQL 入门教程

SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;是一种用于管理和操作关系数据库管理系统的编程语言。它被设计用来查询、更新、插入和删除数据库中的数据。SQL是一种标准化的语言&#xff0c;尽管在不同的数据库系统中可能存在一些差异&…...

Java—装饰器模式

介绍 装饰器模式 装饰器模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许你动态地将行为添加到现有的对象中&#xff0c;而无需修改其代码。装饰器模式提供了比继承更灵活的功能扩展方式。 主要角色 Component&#xff1a;定义一个对…...

服务器远程桌面经常连接不上,造成远程桌面连接不上的原因都有哪些

服务器远程桌面连接不稳定或经常连接不上是一个较为常见的技术问题&#xff0c;其可能的原因涉及多个层面&#xff0c;包括网络设置、服务器配置、系统安全等方面。下面将详细探讨一些可能造成远程桌面连接问题的主要原因&#xff1a; 首先&#xff0c;网络连接不稳定是导致远…...

C#|Maui|BootstrapBlazor|Bootstrap Blazor 组件库改模板 | Bootstrap Blazor 组件库改布局,该怎么改?

先copy一个项目下来&#xff1a;Bootstrap Blazor 组件库 一套基于 Bootstrap 和 Blazor 的企业级组件库 发现不是很满足我的需求&#xff0c;我要把右下角的admin移动到左边去&#xff0c;该怎么移动&#xff1f; 先改代码 点进去到Layout.razor 文档&#xff0c;改成如下&am…...

【Linux】I/O多路复用

文章目录 I/O多路复用select()select()缺点 poll()poll()缺点 epoll()LT(水平触发模式)ET(边缘触发模式)具体函数 I/O多路复用 多进程和多线程实现并发会消耗大量的资源&#xff0c;主进程/线程用于监听和接受连接&#xff0c;再创建多个子进程/子线程来完成与连接的各个客户端…...

ubuntu20.0.4下安装PyTorch

参考文档 https://datawhalechina.github.io/thorough-pytorch/%E7%AC%AC%E4%B8%80%E7%AB%A0/1.2%20PyTorch%E7%9A%84%E5%AE%89%E8%A3%85.html 1&#xff1a;安装Anaconda 登录Anaconda | Individual Edition&#xff0c;https://www.anaconda.com/download/success &#xff…...

Android屏幕旋转流程(1)

&#xff08;1&#xff09;Gsensor的注册和监听 App -->I2C过程&#xff1a;App通过SensorManager.getSystemServer调用到SystemSensorManager&#xff0c;SystemSensorManager通过jni调用到SensorManager.cpp&#xff0c;后通过binder调用到SensorService。SensorService通…...

JS常见的运算符有哪些?

在JavaScript中&#xff0c;常见的运算符可以分为以下几类&#xff1a; 算术运算符&#xff1a; &#xff1a;加法-&#xff1a;减法*&#xff1a;乘法/&#xff1a;除法%&#xff1a;取余&#xff08;模运算&#xff09;&#xff1a;递增--&#xff1a;递减**&#xff1a;幂运…...

【scikit-learn入门指南】:机器学习从零开始

1. 简介 scikit-learn是一款用于数据挖掘和数据分析的简单高效的工具&#xff0c;基于NumPy、SciPy和Matplotlib构建。它能够进行各种机器学习任务&#xff0c;如分类、回归和聚类。 2. 安装scikit-learn 在开始使用scikit-learn之前&#xff0c;需要确保已经安装了scikit-le…...

MEMS:Lecture 17 Noise MDS

讲义 Minimum Detectable Signal (MDS) Minimum Detectable Signal&#xff08;最小可检测信号&#xff09;是指当信号-噪声比&#xff08;Signal-to-Noise Ratio, SNR&#xff09;等于1时的输入信号水平。简单来说&#xff0c;MDS 是一个系统能够分辨出信号存在的最低输入信号…...

Windows运维:找到指定端口的服务

运维过windows的或多或少都遇到过需要找到一个端口对应的服务&#xff0c;或者是因为端口占用&#xff0c;或者是想看下对应的服务是哪个&#xff0c;那么如何操作呢&#xff1f;看看本文吧。 1、按照端口找到进程ID 例如想找8000端口的进程ID netstat -ano | findstr :8000 2…...

Linux文件系统讲解!

一、Linux文件系统历史 1、在早期的时候Linux各种不同发行版拥有自己各自自定义的文件系统层级结构。 2、当我用Red hat转向玩Debian时&#xff0c;我进入/etc我都是懵的。 3、后来Linux社区做了一个标准、FHS&#xff08;文件系统标准层次结构&#xff09;。来帮助Linux系统的…...

做网站难还是app难/知名的搜索引擎优化

卫星各个波段的说明及用途(C/Ku/Ka/S/L) 波段说明c波段4.0-8.0GHz&#xff0c;用于通信卫星下行传输信号&#xff0c;大口径天线接收信号&#xff0c;雨衰小ku波段10.7-18.1GHz&#xff0c;接收天线效率更高&#xff0c;小口径天线接收信号&#xff0c;雨衰大&#xff0c;成本…...

qian p.wordpress/百度网站排名seo

1.图片下方3像素&#xff1a;在div中插如图片时&#xff0c;图片会将div下方撑大3px&#xff1b; 解决方案&#xff1a;&#xff08;a&#xff09;将<div>和<img>写在一行上&#xff08;IE6、ie7&#xff09;; &#xff08;b&#xff09;将<img>转为块状元素…...

wordpress全站301/市场营销推广方案模板

点击上方"brucepk"&#xff0c;选择"置顶公众号"第一时间关注 Python 技术干货&#xff01;阅读文本大概需要 3 分钟。自从 pk哥开始认真在公众号分享文章以来&#xff0c;目前已分享了 45 篇原创文章&#xff0c; 昨晚花了几小时对公众号文章进行了整理&a…...

wordpress建站原理/企业查询

有时我们已经得到充分的分层树形网格的数据&#xff0c;我们还想让树形网格按层次延迟加载节点。首先&#xff0c;只加载顶层节点&#xff1b;然后点击节点的展开图标来加载它的子节点。本教程展示如何创建带有延迟加载特性的树形网格。 jQuery EasyUI最新试用版下载请猛戳>…...

有哪些可以免费做视频的网站/整站排名服务

本文的内容是我的开源代码&#xff08;https://github.com/e10101/AdminLogin&#xff09;的中文说明。项目主要是实现了通过合理配置Nginx的auth_request模块来实现对敏感路径下的内容进行访问限制。 代码 可通过Github访问&#xff1a;https://github.com/e10101/AdminLogin&…...

团购网站开发/品牌策划公司哪家好

031402606 贺翎 031402340 牛妍辉 ** 一、又一个老师的迫切需求--- 选择和分配本科毕设导师之烦恼 ** 首先&#xff0c;让我们一起来看一下客户的现实困扰 系负责人下发导师候选名单(excel或word形式)给该方向的所有学生&#xff0c;每个学生报五个平行志愿提交给年级负责人&am…...