我是靠谱客的博主 贤惠秋天,最近开发中收集的这篇文章主要介绍随机字符串处理(java方法),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

import java.util.Random;

public class UranDom {
    /**
     * 以下均为random函数
     * **/
    private static Random random;
     private static long seed;
      static {
          seed=System.currentTimeMillis();
          random=new Random(seed);
      }
      
    private UranDom(){}
    
    /**
     * 获取种子值
     * @return long 随机种子生成器种子值
     * 
     * */
    public static long getSeed(){
        return seed;
    }
    
    /**
     * 随机返回0到1之间的实数[0,1)
     * @return double 随机数
     * 
     * **/
    public static double uniform(){
        return random.nextDouble();
    }
    
    /**
     * 随机0到N-1的整数[0,N)
     * @param N 上限
     * @retrun int 随机数
     * **/
    public static int uniform(int N){
        return random.nextInt(N);
    }
    /**
     * 随机返回a到b-1之间的整数
     * @param a 下限
     * @param b 上限
     * @return int  随机数
     * 
     * **/
    public static int uniform(int a,int b){
        return a+uniform(b-1);
    }
    
    /**
     * 随机返回a到b之间的实数
     * @param a 下限
     * @param b 上限
     * @return int  随机数
     * 
     * **/
    
    public static double uniform(double a,double b){
        return a+uniform()*(b-a);
    }
    
    /**     * 
     * @param type ==1 数字
     * @param type ==2 纯小写字母
     * @param type ==3 纯大写字母
     * @param type ==4 数字和小写字母混排
     * @param type ==5 数字和大写字母混排
     * @param type ==6大写和小写字母混排
     * @param type ==7 大小写和数字混排
     * @param length  长度
     * @param both  只有length>2且type>4时生效,意思是,两者或以上都必须有一个以上的类型
     * **/    
    public static String RandString(int type,int length,boolean both){
        StringBuffer buffer=new StringBuffer();
        StringBuffer sb=null;
        String number="0123456789";
        String sletter="abcdefghijklmnopqrstuvwxyz";
        String bletter="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        
        //处理type
        switch(type){
        case 1://纯数字
            buffer.append(number);
            sb=new StringBuffer();
            while(length>0){
                sb.append(buffer.charAt(UranDom.uniform(10)));
                length--;
            }
            break;
        case 2://纯小写
            buffer.append(sletter);
            sb=new StringBuffer();
            while(length>0){
                sb.append(buffer.charAt(UranDom.uniform(26)));
                length--;
            }
            break;
        case 3://纯大写
            buffer.append(bletter);
            sb=new StringBuffer();
            while(length>0){
                sb.append(buffer.charAt(UranDom.uniform(26)));
                length--;
            }
            break;
        case 4://数字+小写
            buffer.append(number+sletter);
            if(!both){
                sb=new StringBuffer();
                while(length>0){
                    sb.append(buffer.charAt(UranDom.uniform(36)));
                    length--;
                }
            }else {//两者必有其一
                sb=new StringBuffer();
                int ra1=UranDom.uniform(length);
                int ra2=UranDom.uniform(length);
                //如果重复则重新随机
                while(ra2==ra1){
                    ra2=UranDom.uniform(length);
                }
                //随机第一个和第二个的数值
                char c1=(char)('0'+UranDom.uniform(10));
                char c2=(char)('a'+UranDom.uniform(26));
                
                while(length>0){
                    if(length==ra1){
                        sb.append(c1);
                    }
                    else if(length==ra2)
                    {
                        sb.append(c2);
                    }
                    else sb.append(buffer.charAt(UranDom.uniform(36)));
                    length--;
                }
            }
            break;
        case 5://数字+大写
            buffer.append(number+bletter);
            if(!both){
                sb=new StringBuffer();
                while(length>0){
                    sb.append(buffer.charAt(UranDom.uniform(36)));
                    length--;
                }
            }else {//两者必有其一
                sb=new StringBuffer();
                int ra1=UranDom.uniform(length);
                int ra2=UranDom.uniform(length);
                //如果重复则重新随机
                while(ra2==ra1){
                    ra2=UranDom.uniform(length);
                }
                //随机第一个和第二个的数值
                char c1=(char)('0'+UranDom.uniform(10));
                char c2=(char)('A'+UranDom.uniform(26));
                
                while(length>0){
                    if(length==ra1){
                        sb.append(c1);
                    }
                    else if(length==ra2)
                    {
                        sb.append(c2);
                    }
                    else sb.append(buffer.charAt(UranDom.uniform(36)));
                    length--;
                }
                
            }
            break;
        case 6://大写+小写
            buffer.append(sletter+bletter);
            if(!both){
                sb=new StringBuffer();
                while(length>0){
                    sb.append(buffer.charAt(UranDom.uniform(52)));
                    length--;
                }
            }else {//两者必有其一
                sb=new StringBuffer();
                int ra1=UranDom.uniform(length);
                int ra2=UranDom.uniform(length);
                //如果重复则重新随机
                while(ra2==ra1){
                    ra2=UranDom.uniform(length);
                }
                //随机第一个和第二个的数值
                char c1=(char)('a'+UranDom.uniform(26));
                char c2=(char)('A'+UranDom.uniform(26));
                
                while(length>0){
                    if(length==ra1){
                        sb.append(c1);
                    }
                    else if(length==ra2)
                    {
                        sb.append(c2);
                    }
                    else sb.append(buffer.charAt(UranDom.uniform(52)));
                    length--;
                }
            }
            break;
        case 7:
            buffer.append(number+sletter+bletter);
            if(!both){
                sb=new StringBuffer();
                while(length>0){
                    sb.append(buffer.charAt(UranDom.uniform(62)));
                    length--;
                }
            }else {//三者必有其一
                sb=new StringBuffer();
                int ra1=UranDom.uniform(length);
                int ra2=UranDom.uniform(length);
                int ra3=UranDom.uniform(length);
                //如果重复则重新随机
                while(ra2==ra1){
                    ra2=UranDom.uniform(length);
                }
                while(ra3==ra2||ra3==ra1){
                    ra3=UranDom.uniform(length);                    
                }
                //随机第一个和第二个的数值
                char c1=(char)('0'+UranDom.uniform(10));
                char c2=(char)('A'+UranDom.uniform(26));
                char c3=(char)('a'+UranDom.uniform(26));
                System.out.println(c1+c2+c3);
                while(length>0){
                    if(length==ra1){
                        sb.append(c1);
                    }
                    else if(length==ra2)
                    {
                        sb.append(c2);
                    }
                    else if(length==ra3){
                        sb.append(c3);
                    }
                    else sb.append(buffer.charAt(UranDom.uniform(62)));
                    length--;
            }
            break;
        }    
    
    }

 

最后

以上就是贤惠秋天为你收集整理的随机字符串处理(java方法)的全部内容,希望文章能够帮你解决随机字符串处理(java方法)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部