【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

posted @ 2022-04-16 07:48  逆火狂飙  阅读(864)  评论(0编辑  收藏  举报
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东