【需求】
將大寫字母隨機替換成任意大寫字母
將小寫字母隨機替換成任意小寫字母
將數字隨機替換成數字
其它保持
【代碼】
package com.hy.lab; /** * 隨機替換算法 * 將大寫字母隨機替換成任意大寫字母 * 將小寫字母隨機替換成任意小寫字母 * 將數字隨機替換成數字 * 其它保持 */ public class RandomReplacer { public String encrypt(String original){ char[] arr=original.toCharArray(); for(int i=0,n=arr.length;i<n;i++){ char c=arr[i]; if('A'<=c && c<='Z'){ c=getRndChar('A',25); }else if('a'<=c && c<='z'){ c=getRndChar('a',25); }else if('0'<=c && c<='9'){ c=getRndChar('0',9); }else{
continue;
} arr[i]=c; } return String.valueOf(arr); } private static char getRndChar(char start,int range){ start+=rnd(0,range); return start; } private static int rnd(int min,int max) { return (int)(min+Math.random()*(max-min+1)); } public static void main(String[] args){ String[] arr={"abc123ABC456","xyz098XYZ890","哈哈123","秦a時f明3月2漢1時D關","1234567890","abcdefghjklmnopqrstuvwxyz","ABCDEFGHJKLMNOPQRSTUVWXYZ"}; RandomReplacer rp=new RandomReplacer(); for(String str:arr){ String msg=String.format("原文=%-10s,轉換文=%-10s",str,rp.encrypt(str)); System.out.println(msg); } } }
輸出:
原文=abc123ABC456,轉換文=xty499IKG986 原文=xyz098XYZ890,轉換文=dpi925CGX757 原文=哈哈123 ,轉換文=哈哈860 原文=秦a時f明3月2漢1時D關,轉換文=秦n時z明2月2漢1時Y關 原文=1234567890,轉換文=0470675385 原文=abcdefghjklmnopqrstuvwxyz,轉換文=lwdhggjymtgdgrprczjmfudsk 原文=ABCDEFGHJKLMNOPQRSTUVWXYZ,轉換文=EIVLWJKDXIMFKAIJERHWKFIRB
END