热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

根据用户输入的名字随机推荐用户名

Scala根据用户输入的名字随机推荐用户名不是copy就能用的,要理解逻辑逻辑根据用户名字判断,如果名字长度是0,或者纯数字的名字&
Scala 根据用户输入的名字随机推荐用户名

不是copy就能用的,要理解逻辑

逻辑

  1. 根据用户名字判断,
    如果名字长度是0,或者纯数字的名字,或者包含手机号,或者名字太长,则使用词组(写死的),来作为组装前的 ==“原型” ==。
    否则使用用户名自己的名字作为原型进行拼接推荐
  2. 如果长度小于6,先用字母补齐至6,再用10位数的数字做一个随机长度的数字(避免了数字长度大于10,导致可能出现手机号)
  3. 如果长度大于等于6,则随机用字母+数字进行拼接。

前提:(可自己设置好)
传进来的名字是合法的
假设用户名长度是6个字节-16个字节

注意
StringUtil.getCharLength(name),这个是查字符串的字节数的
isLocalExistName(recommendName),这个是查询数据库里是否有该名字的方法

scala版本

//假设这个是某某接口@RequestMapping(value = Array("/recommendUserName"), method = Array(RequestMethod.POST))@ResponseBodydef recommendUserName(req: HttpServletRequest,response: HttpServletResponse,@RequestParam(defaultValue = "", required = false, value = "userName") userName: String,@RequestParam(defaultValue = "", required = false, value = "mobile") mobile: String): JsonResult = {....val recommendName = userNameRecommendService.getRecommendUserName(userName)....
}

def getRecommendUserName(userName: String): JavaList[String] &#61; {val name &#61; getInitialName(userName) var recommendName:String &#61; ""//获取名字长度val nameLen &#61; StringUtil.getCharLength(name)if(nameLen<6){do{//先拿字母补齐至最短字符recommendName&#61;name&#43;getRandomStrABC(6-nameLen)recommendName&#61;recommendName&#43;getRandomStrNumber(10)}while(!isLocalExistName(recommendName)) //判断名字是否已经被注册}else{do{val a&#61;new Random().nextInt(16-nameLen)val b&#61;16-nameLen-a//利用字母和数字来合成recommendName&#61;name&#43;getRandomStrABC(a)&#43;getRandomStrNumber(b)}while(!isLocalExistName(recommendName)) //判断名字是否已经被注册}
}

当小于6的时候的效果
在这里插入图片描述

当大于6的时候的效果
在这里插入图片描述

//随机获取小写字母的字符private def getRandomStrABC(count: Int): String &#61; {var str &#61; ""for (i <- 1 to count) {val c &#61; &#39;a&#39; &#43; (new Random()).nextInt(26)str &#61; str &#43; c.toChar}str}

//随机获取不同长度的数字字符private def getRandomStrNumber(count: Int): String &#61; {var str &#61; ""val c &#61;new Random().nextInt(count)for(i<-1 to c){val x &#61; (new Random()).nextInt(10)str &#61; str &#43; x}str}

//根据用户名在输入框中输入的名字&#xff08;并不是当前变化着的用户名&#xff09;&#xff0c;随机生成用户名val namePreSet&#61;Array("童姥","拖把","王子","旺财","旺仔","蚊子","乌龟","乌鸦","西瓜","咸菜","象牙","小白","小呆","小狗","小乖","小米","小七","小强","小熊","小猪","猩猩","熊猫","雪糕","雪郎","秧李","野兔","淫魔","油头","仔仔","战童","猪头","竹竿","竹子","叶子","糖糖","小蜜蜂","小燕子","小屁孩","大嘴","大虫","石头","稻草人","拼命郎")def getInitialName(userName:String): String &#61;{//这个是获取字节数目val length &#61; StringUtil.getCharLength(userName)val roleId&#61;math.abs((new Random()).nextInt % (namePreSet.length))var name &#61; ""//去掉数字后的名字&#xff0c;如果长度为0&#xff0c;则说明名字为纯数字val number &#61; userName.replaceAll("\\d&#43;","")//如果名字长度是0&#xff0c;或者纯数字的名字&#xff0c;或者包含手机号&#xff0c;或者名字太长if(number.length&#61;&#61;0||isExistPhone(userName)||length>16||length&#61;&#61;0){//选择采用数组里的名字name &#61; namePreSet.apply(preId)}else{name&#61;userName}name}

//检验是否存在手机号private def isExistPhone(name:String): Boolean &#61;{val pattern &#61; new Regex("[1]([3-9])[0-9]{9}")val number&#61;(pattern findAllIn name).mkString("") // 找出用户名中的手机号val p &#61; Pattern.compile("^[1]([3-9])[0-9]{9}$")val m &#61; p.matcher(number)if(m.matches()){return true}return false}


推荐阅读
  • Oracle中打开10046Trace的各种方法10046trace的跟踪等级10046是一个Oracle的内部事件(event),通过设置这个事件可以得到Oracl ... [详细]
  • HidD_GetHidGuid(guidHID)hDevInfoSetupDiGetClassDevs(guidHID,0,0,DIGCF.DIGCF_PRESENTOrDIGCF ... [详细]
  • 使用Python模拟登录教务系统抓取成绩并分析存储
    本文详细介绍如何使用Python编程语言模拟登录学校教务系统,抓取学生的成绩信息,并进行数据分析和可视化处理,最终将数据存储到MySQL数据库中。 ... [详细]
  • mybatis相关面试题 ... [详细]
  • Hibernate入门指南:单表数据库操作详解
    本文介绍了Hibernate作为全面的ORM框架的基础知识,并详细讲解了在MyEclipse环境中配置Hibernate以及进行基本的数据库单表操作的方法,包括增删改查等常见操作。 ... [详细]
  • 深入解析 Android 中的 ActivityGroup 实现
    本文详细探讨了如何在 Android 应用中使用 ActivityGroup 来实现类似微博客户端主界面的效果,并分析了 TabActivity 的局限性,推荐使用更为灵活的 ActivityGroup 方案。 ... [详细]
  • 电子与正电子的相互作用
    本文探讨了电子与正电子之间的基本物理特性及其在现代物理学中的应用,包括它们的产生、湮灭过程以及在粒子加速器和宇宙射线中的表现。 ... [详细]
  • 本文详细介绍了Java编程语言中的关键字及其用途,包括53个关键字和2个保留字。文章不仅解释了每个关键字的基本功能,还提供了实际应用场景中的使用示例。 ... [详细]
  • 本文探讨了在使用 ClickOnce 部署方式时遇到的自动更新失败问题,包括本地安装与服务器安装的不同表现,并提供了详细的解决方案。 ... [详细]
  • 本文通过对OkHttp源码的详细解读,旨在帮助读者理解其核心执行流程,特别是同步与异步请求的处理方式。文中不仅涵盖了基本的使用示例,还深入探讨了OkHttp的核心功能——拦截器链的工作原理。 ... [详细]
  • 本文介绍了一种使用AT89X51单片机实现的时钟和日期显示系统,通过按键切换显示时间和日期。代码中包含了时间更新、日期计算以及按键扫描等功能。 ... [详细]
  • HTML5 拖拽功能实现
    本文通过一个简单的示例,展示了如何利用 HTML5 的拖放 API 实现元素之间的拖拽功能。示例包括 HTML 结构、CSS 样式以及 JavaScript 逻辑,旨在帮助开发者快速理解和应用拖拽技术。 ... [详细]
  • 优化Nginx中PHP-FPM模块配置以提升性能
    通过调整Nginx与PHP-FPM之间的配置,可以显著提高Web服务器处理PHP请求的速度和效率。本文将详细介绍如何针对不同的应用场景优化PHP-FPM的各项关键参数。 ... [详细]
  • 远程访问用户 Kindle通过电子书实现控制
    介绍自2007年以来,亚马逊已售出数千万台Kindle,令人印象深刻。但这也意味着数以千万计的人可能会因为这些Kindle中的软件漏洞而被黑客入侵。他 ... [详细]
  • 正在学习操作系统开发,遇到一个内核在GRUB Legacy(0.97)中无法成功引导的问题。具体表现为输入内核命令后显示错误信息,尝试引导时GRUB挂起。 ... [详细]
author-avatar
黄岳雯淑怡彦璇
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有