精华内容
下载资源
问答
  • 开发过程,可能需要得到指定长度的字符串,比如验证码就有这种需求,对此存在几种常见的方法,总结如下: 1.指定一数组或者字符串,通过Math.random()得到一随机数,并作为下表进行字符的获取,具体代码如下:、...

    在开发过程中,可能需要得到指定长度的字符串,比如验证码就有这种需求,对此存在几种常见的方法,总结如下:

    1.指定一个数组或者字符串,通过Math.random()得到一个随机数,并作为下表进行字符的获取,具体代码如下:、

    public String getRandomString2(Integer len){
      char[] takeArr = {'0','1','2','3','4','5','6','7','8','9',
      'A','B','C','D','E','F','G','H','I','J','K','L','M','N',
      'O','P','Q','R','S','T','U','V','W','X','Y','Z',
      'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k',
      'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
      'y', 'z'};
      char[] chrs = new char[len];
      int index = 0;
      for(int i=0;i<len;i++){
        index = (char) (Math.random()*62);
        chrs[i] = takeArr[index];
      }
      return String.valueOf(chrs);
    }

    2.通过字母的ASCII码,进行分析直接得到字符char,具体的代码如下:

    public String getRandomString(Integer len){
      char[] chrs = new char[len];
      for(int i =0;i < len;i++){
        chrs[i] = (char) (Math.random()*52+65);
      }
      return String.valueOf(chrs);
    }

     

    以上是两种比较常见的生成指定长度字符的方式

    转载于:https://www.cnblogs.com/yewandemty/p/5369128.html

    展开全文
  • 个人解题思路:先生成1000个不重复的字符串(当时考虑到两种情况,一种是通过循环和随机数,从26个英文字母通过循环和随机数获取到不同的字母拼接再拼接4个不同的字符串,并存储到HashSet...

    记录一道面试题,大致意思就是,在Linux系统环境下,随机生成长度为n的1000个不重复的字符串,随机取其中一个字符串,与其它字符串进行相比较,连续相似的字符串越相似,取相似度最高的前五个并输出,请编程!

    个人解题思路:先生成1000个不重复的字符串(当时考虑到两种情况,一种是通过循环和随机数,从26个英文字母中通过循环和随机数获取到不同的字母拼接再拼接4个不同的字符串,并存储到HashSet中;第二种是通过循环和随机数获取到ASCALL码对应的字符进行拼接,存储到HashSet中。在代码中将存入到HashSet省略没写了),然后通过随机数随机获取其中一个字符串和下标,再通过遍历进行相似度比较(参考NRE的编程笔记)并输出到一个HashMap中(相似度,字符串)。

    代码地址:https://github.com/yuchen666/StringSimilarity

    生成长度随机字符串不重复的数组:

    /***
     * 定义长度为n的内容不重复的数组,
     */
    public class Args {
        /***
         * 定义随机字符串
         * @param length
         * @return
         */
        public static String getRandom(int length) {
            // 定义一个字符串,随机字符串从此字符串中获取
            String str = "abcdefghijklmnopqrstuvwxyz0123456789";
            int randomNum;
            char randomChar;
            Random random = new Random();
            // 定义一个可变字符串
            StringBuffer stringBuffer = new StringBuffer();
            for (int i = 0; i <= length; i++) {
                // 可生成[0,n)之
                randomNum = random.nextInt(str.length());
                // 获得随机位置对应的字符
                randomChar = str.charAt(randomNum);
                // 组成一个随机字符串
                stringBuffer.append(randomChar);
            }
            return stringBuffer.toString();
        }
    
        /***
         * 定义大小为index的数组
         * @param index
         * @return
         */
        public String[] getRandomArray(int index) {
            String[] str = new String[index];
            Random random = new Random();
            for (int i = 0; i < index; i++) {
                str[i]=getRandom(random.nextInt(36))+getRandom(random.nextInt(2));
            }
            return str;
        }
    }

    相似度比较:

    /***
     * 计算相似度
     */
    public class Like {
        public static int compare(String str1, String str2) {
            // 定义一个矩阵,用于存放字符串
            int args[][];
            // 获取字符串的长度,用于存储矩阵中的数据
            int n = str1.length();
            int m = str2.length();
            // i为遍历str1的数据,j为遍历str2的数据
            int i;
            int j;
            // c1为str1中的字符,c2为str2中的字符
            char c1;
            char c2;
            // 记录相同字符,在某个矩阵位置值的增量,不是0就是1
            int temp;
            if (n == 0) {
                return m;
            }
            if (m == 0) {
                return n;
            }
            // 初始化矩阵
            args = new int[n + 1][m + 1];
            // 初始化行
            for (i = 0; i <= n; i++) {
                args[i][0] = i;
            }
            // 初始化列
            for (j = 0; j <= m; j++) {
                args[0][j] = j;
            }
            for (i = 1; i <= n; i++) {
                // 遍历str1
                c1 = str1.charAt(i - 1);
                // 匹配str2
                for (j = 1; j <= m; j++) {
                    c2 = str2.charAt(j - 1);
                    // 两个字符相同
                    if (c1 == c2) {
                        // 则计算值为0
                        temp = 0;
                    } else {
                        // 若不同,则计算值为1
                        temp = 1;
                    }
                    // 左边+1,上边+1, 左上角+temp取最小
                    args[i][j] = min(args[i - 1][j] + 1, args[i][j - 1] + 1, args[i - 1][j - 1] + temp);
                }
            }
            // 返回矩阵
            return args[n][m];
        }
    
        /**
         * 获取最小的值
         */
        private static int min(int one, int two, int three) {
           int min = one;
           if(two<min){
                min = two;
           }
           if(three < min){
                min = three;
           }
           return min;
        }
    
        /**
         * 获取两字符串的相似度
         */
        public double getSimilarity(String str1, String str2) {
            int max = Math.max(str1.length(), str2.length());
            if (max == 0) {
                return 0f;
            } else {
                return 1 - (double) compare(str1, str2) / max;
            }
        }
    }

    通过比较返回结果:

    public class Test {
        public static void main(String[] args) {
            // 用于排序,中间变量
            // double temp = 0.00;
            Like like = new Like();
            Args args1 = new Args();
            double d;
            // 定义一个长度为1000的内容不重复的字符串数组
            String[] randomArray = args1.getRandomArray(1000);
            Map<String, Double> percent = new HashMap<>();
            // 定义一个长度相同的数组,将相似度值放入数组中,根据值去获取下标,根据下标获取具体的 字符串
            // Double[] doubles = new Double[randomArray.length];
            Random random = new Random();
            // 随机从数组中获取一个1000以内的值
            int index = random.nextInt(1000);
            // 从数组中获取到值,然后与数组中每一个数据进行比较,比较后获得相似度值存储到doubles数组中
            String str = randomArray[index];
            for (int i = 0; i < randomArray.length; i++) {
                if (i == index) {
                    percent.put(str, 0.00);
                    //doubles[i] = 0.00;
                } else {
                    percent.put(randomArray[i], like.getSimilarity(str, randomArray[i]));
                    //doubles[i] = like.getSimilarity(str, randomArray[i]);
                }
            }
    
            // 根据HashMap中的 value值进行排序 排序后的结果放入 list集合中
            Set<Map.Entry<String, Double>> entrySet = percent.entrySet();
            List<Map.Entry<String, Double>> list = new ArrayList<>(percent.entrySet());
            Collections.sort(list, new Comparator<Map.Entry<String, Double>>() {
                @Override
                public int compare(Map.Entry<String, Double> o1, Map.Entry<String, Double> o2) {
                    return o2.getValue().compareTo(o1.getValue());
                }
            });
            // 输出当前值
            System.out.println("当前值为:" + str);
            // 输出与其相似的五个字符串
    
            for (int i = 0; i < 5; i++) {
                System.out.println(" 与 " + list.get(i).toString().substring(0, list.get(i).toString().indexOf("=")) +
                        " 较为相似,相似度为:" +
                        list.get(i).toString().substring((list.get(i).toString().indexOf("=") + 1), list.get(i).toString().length()));
            }
        }
    }

    如有更好的办法请私聊或者评论给我,感激不尽!

    展开全文
  • 实际工作,经常用到随机数,例如,给文件名命名一个随机文件名。 本模块提供了一种方式,利用时间戳获随机数,并且可以根据需要,进行最后4位的截取,用到了time库。很容易扩展。

    1. get_time_random模块简介:

    在实际工作中,经常用到随机数,例如,给文件名命名一个随机文件名。
    本模块提供了一种方式,利用时间戳获随机数,并且可以根据需要,进行最后4位的截取,用到了time库。很容易扩展。

    2. 具体说明:

    模块名:get_time_random(is_fulltime)
    参数:True or False

    功能:根据时间戳获取随机数。如果参数is_fulltime 为true,就获取整个时间戳,且将"."转化为“_”;否则,只获取当前时间的最后4位。
    在实际项目中,主要用于随机数获取,可以在文件命名时用它返回一个不重复的文件名。

    用法如下:
        time1=get_time_random(True)
        print('time1=' + time1)
        time2=get_time_random(False)
        print('time2=' + time2)

    源代码如下:

    # -*- coding: utf-8 -*-
    
    import os
    import sys
    import time
    
    #功能:根据时间戳获取随机数。如果参数is_fulltime 为true,就获取整个时间戳,且将"."转化为“_”;
    #否则,只获取当前时间的最后4位。
    #在实际项目中,主要用于随机数获取,可以在文件命名时用它返回一个不重复的文件名。
    #文件名:my_get_time
    def get_time_random(is_fulltime):
        res_title=''
        cur_time = str(time.time())
        timeli=cur_time.split(".")
        print(timeli)
        if is_fulltime:
            for item in timeli:
                res_title = res_title + "_" + item
            return res_title
    
    
        if len(timeli) == 1:
            res_title = timeli[0]
        elif len(timeli) == 2:
            tmp = timeli[1]
            if (len(tmp)) >0:
                res_title=tmp[-4:]
            else:
                res_title=timeli[0]
        else:
            res_title=timestr
        if len(res_title) > 4:
            res_title = res_title[-4:]
        return res_title
    
    #main
    if __name__ == '__main__':
        time1=get_time_random(True)
        print('time1=' + time1)
        time2=get_time_random(False)
        print('time2=' + time2)
    
        

    运行结果:

    aaaaa:note_csdn user1$ python3 my_get_time.py 
    ['1613960744', '175991']
    time1=_1613960744_175991
    ['1613960744', '176044']
    time2=6044

    展开全文
  • java web项目开发,我们做登录的时候都会遇到一问题就是如何将你随机生成的字符串进行生成一张图片并显示页面上。 1.第一步你需要把你生成的验证码字符串数组获取到。 2.接着需要创建一图片的缓冲区的...

    在java web项目开发中,我们做登录的时候都会遇到一个问题就是如何将你随机生成的字符串进行生成一张图片并显示在页面上。
    1.第一步你需要把你生成的验证码字符串数组获取到。
    在这里插入图片描述
    在这里插入图片描述

    2.接着需要创建一个图片的缓冲区的对象。
    在这里插入图片描述

    3.紧接着我们需要根据缓冲区获取它的绘制环境,也可以说是笔。
    在这里插入图片描述

    4.我们需要给这张图片设置背景色,可以根据自己的需求来设置。
    在这里插入图片描述

    5.设置完背景色,我们就填充一个矩形。
    在这里插入图片描述

    6.然后我给这张图片加上边框,并且颜色为蓝色。
    在这里插入图片描述

    7.再给这张图片设置一下字体样式
    在这里插入图片描述

    8.接着我就需要向图片中放入我生成的验证码字符串数组
    在这里插入图片描述

    9.我需要给这张图片加一些干扰线,这时我们利用for循环来创建干扰线
    在这里插入图片描述

    这时候我们已经将一个字符串数组生成图片了。效果图如下:在这里插入图片描述

    展开全文
  • 顺序/随机颜色

    2020-06-03 09:56:19
    思路: 1、页面创建一div、...5、获取input字符串并转为数组 6、遍历数组 将数组的每item赋值一新的标签(带背景颜色 ) <style> div { width: 300px; height: 300px; border: 1px gray solid;
  • 注意事项 ...1 获取随机字符串或数字 获取随机8位字符串获取随机8位数字: cksum:打印CRC效验和统计字节 2 定义一颜色输出字符串函数 function关键字定义一函数,可加或不加。 3 批量创建用户 4
  • 8实战及常用Shell脚本编写

    千次阅读 2018-10-02 12:46:38
    注意事项: 1).开头加解释器:#!/bin/bash 2).语法缩进,使用四空格,多加注释说明 3)....4).默认变量是全局的,函数使用local指定局部变量 ...1.获取随机字符串或数字 获取随机8位字符串 获取随机8位数...
  • 3.noncestr,随机字符串 4.signature,签名 二、业务需求 这次开发需要小程序调用微信扫一扫,所以用到这认证签名。认证签名,我的理解就是给url打上标记,让微信后台知道这是安全的~~ 三、实现 1.1获取...
  • J2ME优化压缩PNG文件 4个目标文件 内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理 这是个J2ME控制台程序,它能剔除PNG文件的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失...
  • python 各种库的推荐

    2020-11-28 17:02:48
    文章目录前言-1、Rich1 字符串反转2 使首字母大写3 在字符串中查找唯一元素4 重复打印字符串或列表5 列表推导式6 交换变量7 将字符串拆分为子字符串列表8 将字符串列表组合成单个字符串9 检查回文字符串10 列表中的...
  • 4)默认变量是全局的,函数变量local指定为局部变量,避免污染其他作用域 5)有两命令能帮助我调试脚本:set -e 遇到执行非0时退出脚本,set-x 打印执行过程。 6)写脚本一定先测试再到生产上。 1、获取随机...
  • /** * 内存生成图片(纸),没有设置颜色,画填充的矩形,并且和纸的大小相同,矩形有颜色。... * 先准备好数据,随机生成4个字符,把字符画到纸上 * 画干扰线 * 把内存的图片输出到客户端上 ...
  • J2ME优化压缩PNG文件 4个目标文件 内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理 这是个J2ME控制台程序,它能剔除PNG文件的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失...
  • 2.2 在字符串的开头或结尾处做文本匹配 38 2.3 利用Shell通配符做字符串匹配 40 2.4 文本模式的匹配和查找 42 2.5 查找和替换文本 45 2.6 以不区分大小写的方式对文本做查找和替换 47 2.7 定义实现最短匹配的正则...
  • PHP非常有用的函数

    2016-05-12 15:11:21
    项目经常会需要一些让人头疼的函数,作为开发者应该整理一自己的函数库,需要之时复制过来即可。本文收集整理数十PHP项目...1、PHP加密解密2、PHP生成随机字符串3、PHP获取文件扩展名(后缀)4、PHP获取
  • 215 在字符串中查找一个字符 216 在字符串中查找一个子串 217 查找字符串中的标记 218 使用strtokf)解析一个字符串 219 扩展strtok函数以实现对空标记的解析 220 理解不区分大小写的函数 第二十二章 操作字符串 221 ...
  • 注意是直接传入而不是获取键盘的输入,比如ios开发进行调用将 网络请求的数据(该数据可以直接当做字符串)传入; 3、函数的返回值是字符串,将加解密后的字符串返回即可; 4、私钥进行加密,公钥进行解密,公私...
  • 格式化 JSON 字符串,stringify 任何内容8. 顺序执行 promise9. 轮询数据10. 等待所有 promise 完成11. 交换数组值的位置12. 条件对象键13. 使用变量作为对象键14. 检查对象里的键15. 删除数组重复项16. ...
  • 注意事项1)开头加解释器:#!/bin/bash2)语法缩进,使用四空格;多加注释说明。3)命名建议规则:变量名大写、局部变量小写,函数名小写,名字体现出实际作用。4)默认变量是全局的,...1 获取随机字符串或数...
  • 注意事项1)开头加解释器:#!/bin/bash2)语法缩进,使用四空格;多加注释说明。3)命名建议规则:变量名大写、局部变量小写,函数名小写,名字体现出实际作用。4)默认变量是全局的,...1 获取随机字符串或数字获...
  • 10.3.3 输入格式字符串中的字符 377 10.3.4 输入浮点数的各种变化 378 10.3.5 读取十六进制和八进制值 379 10.3.6 用scanf()读取字符 381 10.3.7 scanf()的陷阱 383 10.3.8 从键盘上输入字符串 383 10.3.9 ...
  • 注意事项1)开头加解释器:#!/bin/bash2)语法缩进,使用四空格;多加注释说明。3)命名建议规则:变量名大写、局部变量小写,函数名小写,名字体现出实际作用。4)默认变量是全局的,...1. 获取随机字符串或数字...
  • 注意事项1)开头加解释器:#!/bin/bash2)语法缩进,使用四空格;多加注释说明。3)命名建议规则:变量名大写、局部变量小写,函数名小写,名字体现出实际作用。4)默认变量是全局的,...1 获取随机字符串或数字获...
  • 注意事项1)开头加解释器:#!/bin/bash2)语法缩进,使用四空格;多加注释说明。3)命名建议规则:变量名大写、局部变量小写,函数名小写,名字体现出实际作用。4)默认变量是全局的,...1 获取随机字符串或数...
  • 实例182 获取字符在字符串中最后出现的 位置 实例183 获取大写字符的位置 实例184 获取小写字符的位置 实例185 统计字符数 4.6 函数 实例186 函数默认参数的使用 实例187 通过函数的重载实现不同数据类型的...
  • 注意事项1)开头加解释器:#!/bin/bash2)语法缩进,使用四空格;多加注释说明。3)命名建议规则:变量名大写、局部变量小写,函数名小写,名字体现出实际作用。4)默认变量是全局的,...1 获取随机字符串或数字获...
  • 10.3.3 输入格式字符串中的字符 377 10.3.4 输入浮点数的各种变化 378 10.3.5 读取十六进制和八进制值 379 10.3.6 用scanf()读取字符 381 10.3.7 scanf()的陷阱 383 10.3.8 从键盘上输入字符串 383 10.3.9 ...
  • 实例182 获取字符在字符串中最后出现的 位置 实例183 获取大写字符的位置 实例184 获取小写字符的位置 实例185 统计字符数 4.6 函数 实例186 函数默认参数的使用 实例187 通过函数的重载实现不同数据类型的...
  • R语言经典实例(+英)

    热门讨论 2014-12-03 18:46:15
     7.6 查看字符串中的特殊字符 179  7.7 生成字符串的所有成对组合 179  7.8 得到当前日期 181  7.9 转换字符串为日期 181  7.10 转换日期为字符串 182  7.11 转化年、月、日为日期 183  7.12 得到儒略日期 ...
  • delphi 开发经验技巧宝典源码

    热门讨论 2010-08-12 16:47:23
    0050 如何在字符串中使用单引号 32 0051 结构对象的定义与使用 32 0052 使用数组为TlistView组件动态创建字段 33 0053 解决程序的死锁问题 34 0054 怎样实现接口委托 34 0055 在Delphi中使用汇编 35 ...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 225
精华内容 90
关键字:

在字符串中随机获取4个字符