java用replace方法替换身份证号的中间位数

我在用replace方法替换身份证的中间几位,

 String uAccount = userAccount.replace(userAccount.substring(6, 14), "********");

这样的方法当身份证号码是622222222222222222这样的时候,替换出来成6****************2这样了,难道不应该是622222********2222的吗,但是如果身份证号码没有重复这么多的话它出来是合适的,比如622420********1478这样,这是为什么呢,求大神指点!

0

14个回答

userAccount.substring(6, 14) 你截取的得到的是 222222, 替换的时候是拿你截取的222222这串字符串进行匹配, 所有替换后就会是6****1278了,

你可以先截取0-6的缓存起来 然后截取14-end的缓存,再进行替换

String str1 =userAccount.substring(0, 6) ;
String str2 =userAccount.substring(14, userAccount.length()) ;

String result = str1 + "******"+str2;

8

StringBuilder sb = new StringBuilder(userAccount);
sb.replace(6, 14, "********");
userAccount=sb.toString();

2

因为你截取的第7到15位之间的字符串就是“22222222”。是8个2,那么,你给的字符串中恰巧有17个连续的2,其中有两个连续的“22222222”,然后剩下一个2了。明白了没?

1
p826688096
不再使用了 回复tianguozhiya: 测试要用正式数据的,不会出现这种问题的。上面同志的截取两端的字符串,拼接星号是可以解决你的问题的。
一年多之前 回复
tianguozhiya
去你大爷的昵称已存在 但是我只指定替换的是6-14位啊,后面的没指定为啥也替换了
一年多之前 回复
tianguozhiya
去你大爷的昵称已存在 嗯嗯 你说的这个明白了 原来是把两段22222222都替换了 那有什么解决办法呢
一年多之前 回复

一般都是substring()出来一段 去替换 如果还是担心有重复的话 可以tochararray()之后重新拼接把指定的位拼成* 就ok了

0

你通过userAccount.substring(6, 14), 截取出来是“22222222”,替换的时候当然就把所有的匹配项都替换掉了。你可以使用截取再拼接的方法。

0
userAccount.substring(0,6)+"********"+userAccount.substring(userAccount.length()-4,userAccount.length());
0
    public static void main(String[] args) {
    String id = "110110199001011010";
    System.out.println(id.length());
    String substring = id.substring(6,14);
    System.out.println(substring);
    String replace = id.replace(substring, "********");
    System.out.println(replace);
    char[] charArray = id.toCharArray();
    String newid = "";
    for (int i = 0; i < charArray.length; i++) {
        if (i <= 5 || i >= 14) {
            newid += charArray[i];
        }else {
            newid += "*";
        }
    }
    System.out.println(newid);
}
0

String uAccount = userAccount.substring(0, 6) + "********" + userAccount.substring(14);

0

是你的写法有问题,String uAccount = userAccount.replace(, "********") 相当于String uAccount = userAccoun.replace
("22222222","********")。 userAccount.substring(6, 14)这个是单独计算出来的,跟外面层的 userAccount已经没关系了。

0
tianguozhiya
去你大爷的昵称已存在 嗯嗯 我也发现了 非常感谢
一年多之前 回复
共15条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
js身份证号、电话脱敏处理(用*替换中间数据)
数字类型 certificatecodecopy = certificatecode.replace(/^(.{6})(?:\d+)(.{4})$/, "$1****$2"); 所有类型 enginenocopy = engineno.replace(/^(.{2})(?:\w+)(.{1})$/, "$1****$2");
身份证号中间以*代替
public static String idFormat(String id){ // 可以用 StringBuilder 这个类,里面有一个接口replace,如下 StringBuilder sb = new StringBuilder(id); sb.replace(6, 14, "********"); return sb.toString(); } public stati
String的一部分替换为星号“*”
项目中有一些地方需要做到保密的效果: 用户名一部分需要替换为*来达到保密效果; 银行卡号一部分需要替换为 * 身份证号一部分需要替换为 * 把这个工具类分享出来package com.Util;/** * File Description : String的替换,以达到保密效果 * * @author : zhanggeng * @version : v1.0 *
正则表达式:手机号隐藏中间四位,身份证隐藏位数
return (obj).replace(/(\d{3})\d{4}(\d{4})/, '$1****$2');
使用正则将身份证等敏感信息替换为*号
最近在项目中要替换一些客户的敏感信息,身份证 银行卡等 /** * 正则替换为*号 * @param param * @return */ public String replaceStr(String param){ int len=param.length(); if(len<9){ return param; } return param.
身份证号码的*替换
string str = "111002198801010311"; //前4位显示+*+后4位显示 //2种字符串截取的方式 str = str.Substring(0, 4) + new string('*', str.Length - 8) + str.Substring(str.Length - 4, 4); str = str.Substring(0, 6) + "********
身份证信息中间变星
定义一个工具类把下面代码放进去等到需要获取的时候调用就可以 public class StringXing { public static String xingName(String name) { String result = ""; result = name.substring(0, 1); for (int i = 0; i result += "*"; } retu
iOS 身份证号码用星号替换(*)
最近做金融类app,对用户隐私要求较高。今天总结一下最近一个月遇到的小问题。 /** 为保护用户隐私,身份证号码中间用(*)号替换 @param idCardNumber 完整的身份证号码串 (idCard) @return 隐私身份证号码 */ + (NSString *)idCardNumber:(NSString *)idCardNu...
Java实现隐藏手机、身份证中间字符
手机号隐藏中间四位 String phone = &quot;13688886666&quot;; phone = phone.replaceAll(&quot;(\\d{3})\\d{4}(\\d{4})&quot;,&quot;$1****$2&quot;); 实现效果 136****6666 身份证号隐藏中间字符 String cardId = &quot;420388888888886666&quot;; cardId = cardId.replaceAll(&quot;(...
在java中使用正则验证手机号和身份证号,中间使用*号代替
1.对手机号进行验证,手机号中间使用*号代替,效果:130****4152 //首先从enterprise中获得到手机号 String phone = enterprise.getAdminPhone(); //对手机号进行正则验证 String phoneNumber = phone.replaceAll(&quot;(\\d{3})\\d{4}(\\d{4})&quot;,&quot;$1****$2&quot;); //如果想...
手机号码、身份证等在前天显示需要部分被替代星号,JS小脚本
//str:源字符串 //s、e:需要替换的开始位置s和结束位置e //如果e不传,默认到字符串结尾 function starReplace(str, s, e) {         if (!str) return str;         var _k =  !!e&amp;amp;&amp;amp;e != 0  ? str.substring(s, e) : str.substring(s)...
【java】替换字符串一些部分为星号达到保密效果(工具类整理)
项目中有一些地方需要做到保密的效果: 用户名一部分需要替换为*来达到保密效果;银行卡号一部分需要替换为 *身份证号一部分需要替换为 * 把这个工具类分享出来 package com.Util; /** * File Description : String的替换,以达到保密效果 * */ public class StringReplaceUtil { /**
java 正则表达式 数字替换成星号
1.String orgi = "010-5426321";   orgi = orgi.replaceAll("^(.{3})(.*)(.{4})$", "$1*****$3");      /* $1,$3是占位符,$1代表(.{3})也就是010.          (.*)代表任意字符             $3代表 (.{4}) 也就是后四们6321*/   Syste
使用正则表达式为手机号码或身份证号码打星号
介绍如何使用正则表达式替换身份证或者电话号码中的一部分数字为星号
用Java正则替换手机号中间4位数
JAVA手机号中间四位替换为*
javacript replace 正则取字符串中的值并替换。
问题:   在使用ueditor 富文本编辑器,给字体颜色时,发现getCent后的内容颜色为rgb 如 &amp;lt;span style=&quot;color: rgb(0, 0, 255);&quot; &amp;gt;aaaaa &amp;lt;/spa&amp;gt; 而前端需求rgb的读取不了,因此要转成16进制的颜色。找了uedtitor编辑器一圈,没找到方法。 因此。我想到的解决方法是,在提交保存之前,把富文本里的内容找出...
js将手机号身份证及银行卡号等敏感信息替换为*号
function handle(param){ var strlen = param.length; if(strlen &amp;lt; 9){ return strlen; } return param..replace(/^(.{6})(?:\d+)(.{4})$/,&quot;$1******$2&quot;); }
JavaScript 截取字符函数的使用方法
- -,总把substring与c#的记混了,前几天因为substring浪费了我半个小时的时间,在这里记下区别,避免再犯。 substring定义和用法 substring() 方法用于提取字符串中介于两个指定下标之间的字符。 语法 stringObject.substring(start,stop) 参数描述 start 必需。一个非负的整数,规定要提取的子...
mysql对身份证号进行脱敏处理
一、数据脱敏解释在日常开发需求中会经常遇到数据脱敏处理,比如身份证号、手机号,需要使用*进行部分替换显示。这样能使敏感隐私信息在一定程度上得到保护。那么什么是数据脱敏呢? 在涉及客户安全数据或者一些商业性敏感数据的情况下,在不违反系统规则条件下,对真实数据进行改造并提供测试使用,如身份证号、手机号、卡号、客户号等个人信息都需要进行数据脱敏。二、数据脱敏实现数据脱敏实现可以从数据库查数据的时候进行处...
一些正则判断 - 验证是否是正确的手机号码/身份证/隐藏中间几位数字
验证手机格式,验证密码格式,验证身份证号码,隐藏手机号中间四位,身份证号 隐藏 年月日 从第9-16
Android 隐藏身份证号码和手机号码中间的几位
隐藏身份证号码和手机号码中间的几位作信息保护
隐藏身份证号中间位数
+ (NSString*)idCardToAsterisk:(NSString *)idCardNum{NSInteger length = idCardNum.length;return [idCardNum stringByReplacingCharactersInRange:NSMakeRange(6, 8) withString:@&quot;*******...
StringUtils.replace 的用法替换字符串
String s= “a100000b”;String ss=StringUtils.replace(s, “100000”, “替换后的字符”);System.out.println(ss)则输出:a替换后的字符b
replace方法全部替换的写法
var string_need_replace=..; var re = new RegExp("","g"); //定义正则表达式--这样回替换掉字符串中所有的,string_need_replace.replace('','\n');只会替换掉字符串中第一个 string_need_replace =string_need_replace.replace(re,"\n"); //注:一般通常
C#隐藏手机号中间数字
   private string GetEncryptionMobelPhone(string phone) {             try             {                 return Regex.Replace(phone, &quot;(\\d{3})\\d{4}(\\d{4})&quot;, &quot;$1****$2&quot;);             }             cat...
Java 电话号码中间四位“****”代替
错误原因 *** 字符不能被Ajax Json 传递 可以用转义字符?(不清楚) 最后修改方法: 前台JS中修改(安全性低) $("#mobile").html(mobile.toString().substring(0,3)+"****"+mobile.toString().substring(7)); 前台JS  错误修改方法:
身份证加空格、手机号分为3位,4位,4位一组加空格、车架号自动加空格的方法
如何自动加空格,并删除空格的方法??根据下面的提示,希望能帮助您!come on!       var pre=0,//上一次输入字符个数         next=0,//下一次输入字符个数         inputing;//此次操作是输入还是删除  //控制vin长度      function test(){ // var pre=document.getElementByI
js修改身份证,手机号码为****的方法
idenCode: res.data.idenCode.substr(0, 9) + “**” + res.data.idenCode.substr(14), substr idenCode: res.data.idenCode.substr(0, 9) + &quot;****&quot; + res.data.idenCode.substr(14), replace 这里写代码片...
基于string下标和replace函数替换string中的字符
在学习C++ primer时,有一个练习需要这样做,查看答案时发现用了后面的内容find()函数,但之前自己想的算法并没有find。 #include"iostream" #include"string" using namespace std; void sreplace(string &s, const string &oldVal, const string &new
Java 中的replaceAll 结合正则表达式替换字符串内容
[code=&quot;java&quot;] //需求: //Convert 20:33:24:34 to 20:33:24:034 [/code] [code=&quot;java&quot;] //来吧,开刀 String instantStr = &quot;20:33:24:34&quot;; String resultStr = instantStr.replaceAll(&quot;:\\d{2}$&quot;,&quot;034&quot;)...
身份证号码中间某几位数字隐藏
String pid = "获取的身份证号码"; int hideLength = 8;//替换位数,这里替代中间8位 int startIndex = pid.length()/2-hideLength/2; String replaceSymbol = "*";//替换符号,这里用“*”为例 StringBuilder stringBuilder = new StringBuilder...
java手机号中间4位使用*替换
方法1:截取替换法 /** * @description 手机处理工具 */ public class MobileUtils { /** * 中间4位使用*替换 * @param phone * @return */ public static String midleReplaceStar(String phone){ ...
Java中,如果将字符串中的*号替换,要注意,不能直接替换*,要用\\*
Java中,如果将字符串中的*号替换,要注意,不能直接替换*,要用\\* String test=”*123*“ test= test.replaceAll("*", "A");//报错Dangling meta character '*' near index 0 正确的是: test= test.replaceAll("\\*", "A");
Java String类的常用方法(字符串替换)
No. 方法名称 类型 描述 1 public String replaceAll(String regex,String replasement) 普通 用新的内容替换全部旧内容 2 public String replaceFirst(String regex,String replacement) 普通 替换首个满足条件的内容 public class Demo { ...
java String 类的replace 和replaceAll 方法替换“?”号
这两个 方法确实简单,我们也知道他们就是用来进行字符和字符串的替换的,但是还是注意: replace(char oldChar, char newChar)           返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。 replaceAll(String regex, Stri
用replace()方法去除双引号
String uuid = requset.getParameter("uuid"); System.out.println(uuid) 得到的是:"866b21f82250418bb113c4bd73de7d7b"  ,带有双引号,这样就不方便用这个值查数据库。 现在改成这样, String uuid = requset.getParameter("uuid").replace("\
java的String和StringBuilder类的替换方法的运用。
java替换String和StringBuilder类的方法的运用。 大致代码如下: package test; /**  * @author : suyuyuan  * @date :2016年5月18日 上午11:28:47  * @version 1.0  */ public class a { public static void main(String[] ar
Java字符串替换(replace)
Java中字符串替换函数主要有三种replace、replaceFirst和replaceAll 1.replace函数   public String replace(char oldChar,char newChar)替换字符串中所有的oldChar为newChar,返回值是字符串String word = "wangwang"; System.out.println(word.replac
Java字符串操作replace无效的原因,replace用法
为了去掉That’s中间的符号’ public class Main { public static void main(String[] args) { String s = &quot;That's doing nothing.&quot;; s.replace(&quot;o&quot;,&quot;&quot;); System.out.println(s); } } //输出结果That's do...
replace替换不成功问题
with open("%sindex.html" % (dir), "wb") as code: html = html.replace('师师', '研') html = html.replace('师师', '学') print html 今天遇到一个很蠢的问题,替换不了目标文件中的字符串: 结果原因是没有赋值! 注意: Replace这个函数并不直接操作传入的