A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 滔哥 黑马帝   /  2013-3-8 16:43  /  2185 人查看  /  3 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

1.随机位置随机长度的用指定字符替换原来字符串中的字符
2.指定字符串指定长度末尾替换

eg: 1.encryptionStr("123456", 3, true, 2, "*")  -->12345*6 or 1234**6 or 12345*
     2.encryptionStr("123456", 3, false, 2, "*")  -->12345**
演示代码:
  1. /**  

  2. 02      * @param str  

  3. 03      *            要处理的str  

  4. 04      * @param keepStart  

  5. 05      *            要保留的字符串  

  6. 06      * @param flag  

  7. 07      *            true-->随机位置随机替换 ,false-->尾部替换len个changeStr  

  8. 08      * @param num  

  9. 09      *            changeStr在str结果中的个数  

  10. 10      * @param changeStr  

  11. 11      *            替换使用changeStr,eg:"*","$","%" ....  

  12. 12      * @return  

  13. 13      */

  14. 14     public static String encryptionStr(String str, int keepStart, boolean flag,  

  15. 15             int num, String changeStr) {  

  16. 16         int lenAll = str.length();  

  17. 17         int strLen = lenAll - keepStart;  

  18. 18         if (keepStart > str.length()  

  19. 19                 || str.length() - keepStart < changeStr.length())  

  20. 20             return str;  

  21. 21         String tempStr = str.substring(keepStart, str.length());  

  22. 22         String pz = str.substring(0, keepStart);  

  23. 23         String result = "";  

  24. 24         Random r = new Random();  

  25. 25         if (flag) {  

  26. 26             num = r.nextInt(strLen - 1) + 1;  

  27. 27             int tempLen = r.nextInt(strLen);  

  28. 28             if (strLen - tempLen <= num) {  

  29. 29                 pz = str.substring(0, pz.length() + tempLen);  

  30. 30                 for (int i = 0; i < num && pz.length() < strLen + keepStart; i++) {  

  31. 31                     pz += changeStr;  

  32. 32                 }  

  33. 33                 return pz;  

  34. 34             }  

  35. 35             result = tempStr.substring(0, tempLen);  

  36. 36             for (int i = 0; i < num && pz.length() < strLen + keepStart; i++) {  

  37. 37                 result += changeStr;  

  38. 38             }  

  39. 39   

  40. 40             result += tempStr.substring(tempLen + num, strLen);  

  41. 41             pz += result;  

  42. 42         } else {  

  43. 43             pz += str.substring(pz.length(), lenAll - num);  

  44. 44             for (int i = 0; i < num; i++) {  

  45. 45                 pz += changeStr;  

  46. 46             }  

  47. 47         }  

  48. 48         return pz;  

  49. 49     }
复制代码

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 斗胆给滔哥加个技术分,以示支持 ^_^.

查看全部评分

3 个回复

倒序浏览
这么长啊。。。吓我一跳
回复 使用道具 举报
学习了,呵呵..
回复 使用道具 举报
我也进来学习学习……
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马