【java】将字符串中的大写字母、小写字母和数字随机替换成同类其它字母
【需求】
将大写字母随机替换成任意大写字母
将小写字母随机替换成任意小写字母
将数字随机替换成数字
其它保持
【代码】
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