当前位置: 首页 > news >正文

ArkTS 测试数据生成利器:getRandomStr 和 getRandomChinese 实战指南

文章目录

    • 背景
      • 总览方法
      • getRandomChineseChar / getRandomChinese:随机汉字
      • getRandomStr:自定义字符池随机字符串
      • getRandomColor:随机十六进制颜色
      • 完整示例:生成随机用户信息
      • 写在最后

背景

近期发现一款很有意思的HarmonyOS 三方库, 地址 @pura/harmony-utils(V1.4.0) , 作者是"桃花镇童长老", 我这里也是直接通过该作者公布的源码进行案例编写进行,写了到目前写了一部分demo ,感觉确实很有帮助,这里呢也是开始写一个系列的演示demo 供大家参考。如有帮助可以在OpenHarmony中进行下载安装进行使用哦

案例demo导航展示

↓↓↓↓↓↓接下来言归正传 ↓↓↓↓
上一篇讲了数字类随机方法,这篇来讲RandomUtil里更有意思的三类:

  1. 随机汉字:生成随机中文字符
  2. 随机字符串:自定义字符池生成字符串
  3. 随机颜色:生成随机十六进制颜色值

总览方法

先来看下这个三方库的方法有哪些

getRandomChineseChar / getRandomChinese:随机汉字

getRandomChineseChar()生成单个随机汉字,getRandomChinese(n)生成 n 个汉字组成的字符串:

this.Btn('getRandomChineseChar() 单个汉字','#E74C3C',()=>{constv=RandomUtil.getRandomChineseChar();this.addLog(`getRandomChineseChar() → "${v}"`);})Row({space:8}){Text('长度:').fontSize(13).fontColor('#666')TextInput({text:this.chineseCount.toString()}).layoutWeight(1).height(38).fontSize(13).type(InputType.Number).onChange(v=>{this.chineseCount=parseInt(v)||4;})}this.Btn(`getRandomChinese(${this.chineseCount})`,'#E74C3C',()=>{constv=RandomUtil.getRandomChinese(this.chineseCount);this.addLog(`getRandomChinese(${this.chineseCount}) → "${v}"`);})

实际运行结果

  • getRandomChineseChar()→ 每次返回一个随机汉字,比如"驿""梓""铃"
  • getRandomChinese(4)→ 4个随机汉字,比如"幻轩青瓷"

生成的汉字来自常用汉字范围(CJK 统一汉字,Unicode\u4e00\u9fa5),共 20902 个汉字。不会生成生僻字,适合生成测试用的中文内容。

使用场景

  • 生成随机的中文昵称(可以配合数字)
  • UI 测试时填充中文占位内容
  • 生成随机的中文标题测试排版

getRandomStr:自定义字符池随机字符串

getRandomStr(length, strPool)从你指定的字符池里随机抽取字符,生成指定长度的字符串:

Row({space:8}){Text('长度:').fontSize(13).fontColor('#666')TextInput({text:this.strLength.toString()}).layoutWeight(1).height(38).fontSize(13).type(InputType.Number).onChange(v=>{this.strLength=parseInt(v)||8;})}this.Btn(`getRandomStr(${this.strLength}, 数字池)`,'#27AE60',()=>{constv=RandomUtil.getRandomStr(this.strLength,'0123456789');this.addLog(`getRandomStr(${this.strLength}, "0-9") → "${v}"`);})this.Btn(`getRandomStr(${this.strLength}, 字母池)`,'#27AE60',()=>{constv=RandomUtil.getRandomStr(this.strLength,'abcdefghijklmnopqrstuvwxyz');this.addLog(`getRandomStr(${this.strLength}, "a-z") → "${v}"`);})this.Btn(`getRandomStr(${this.strLength}, 字母数字混合池)`,'#27AE60',()=>{constv=RandomUtil.getRandomStr(this.strLength,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789');this.addLog(`getRandomStr(${this.strLength}, alphanumeric) → "${v}"`);})

实际运行结果(length=8 时):

  • 数字池:"34719826"这样的纯数字字符串
  • 字母池:"kxmvtpwj"这样的纯小写字母
  • 字母数字混合:"aB3kZ7xM"这样的大小写字母加数字混合

三个典型场景

场景1 - 生成短信验证码(纯数字,6位):

constsmsCode=RandomUtil.getRandomStr(6,'0123456789');// 例如:'847291'

场景2 - 生成邀请码(大写字母+数字,8位):

constinviteCode=RandomUtil.getRandomStr(8,'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789');// 例如:'K7P3NZ2A'

场景3 - 生成临时密码(字母数字混合,12位):

consttempPassword=RandomUtil.getRandomStr(12,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789');// 例如:'kzP7nXmQ3rBv'

getRandomColor:随机十六进制颜色

生成随机的 CSS 十六进制颜色值(#RRGGBB格式):

Row({space:12}){Button('getRandomColor()').layoutWeight(1).height(40).fontSize(14).fontColor('#fff').backgroundColor('#F39C12').borderRadius(8).onClick(()=>{constc=RandomUtil.getRandomColor();this.randomColor=c;this.addLog(`getRandomColor() → "${c}"`);})Row().width(40).height(40).backgroundColor(this.randomColor).borderRadius(8).border({width:1,color:'#ddd'})}

实际运行结果

  • getRandomColor()→ 类似"#3A7FD5"这样的随机颜色值

this.randomColor存的就是颜色字符串,直接传给backgroundColor属性就能用,ArkTS 支持直接用十六进制字符串设置颜色。

使用场景

  • 生成随机头像背景色
  • 数据可视化里给不同系列分配颜色
  • UI 主题测试

完整示例:生成随机用户信息

把以上方法组合起来,生成一套随机测试用户数据:

import{RandomUtil}from'../Utils/RandomUtil';functiongenerateRandomUser(){constname=RandomUtil.getRandomChinese(2)+RandomUtil.getRandomChinese(1);// 2-3个字姓名constinviteCode=RandomUtil.getRandomStr(8,'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789');constavatarColor=RandomUtil.getRandomColor();constage=RandomUtil.getRandomInt(18,60);return{name,inviteCode,avatarColor,age};}// 调用示例constuser=generateRandomUser();// 结果类似:// { name: "林青云", inviteCode: "K3NP7ZA2", avatarColor: "#5E8BC7", age: 32 }

写在最后

随机字符串的关键是字符池设计——根据你的业务需求选合适的字符集。验证码用数字池,邀请码用字母数字,密码用更丰富的字符集。

getRandomColor直接返回可用的颜色字符串,在 ArkTS 里赋值给颜色属性无需任何转换,用起来特别顺手。

下一篇讲RandomUtil的 UUID 生成——包括 36 位标准格式、32 位无横杠格式、以及二进制 UUID。

http://www.jsqmd.com/news/909212/

相关文章:

  • 如何用KeymouseGo实现鼠标键盘自动化:告别重复工作的终极指南
  • 百果园好吃卡为什么闲置?最全回收指南帮你快速出手 - 团团收购物卡回收
  • 铜仁春节前黄金变现正当时,福昌夏回收高价省心 - 黄金上门回收
  • 5分钟搞定多显示器DPI优化:终极鼠标平滑过渡方案
  • 忻州黄金回收门店精选,长悦引领品质服务新标杆 - 专业黄金回收
  • 终极免费文档下载脚本指南:如何轻松获取百度文库等30+平台资源
  • 为什么选择verysmol_llama-v11-KIx2-openmind?轻量级AI模型的5大核心优势
  • 2026精选上海瑞柏龙实业:静安口碑好的定制地板哪家好 - LYL仔仔
  • 2026成都护栏网厂家深度对比:4家头部企业多角色需求下 - 速递信息
  • 咸宁黄金回收哪家强?六机构速览与对比一览帮您挑 - 专业黄金回收
  • 2026年5月18日每日60秒读懂世界:科技创新、AI应用、黄金行情、广西突发事件与国际热点观察
  • 如何快速上手ColQwen3.5-4.5B-v3:从安装到文档嵌入的完整Python教程
  • 鸿蒙数学:AI 底层革命白皮书(根治全人类AI弊病)(一二三阶定世界)
  • 遂宁黄金回收避坑指南:当心这些套路,认准长悦才放心 - 专业黄金回收
  • Breeze-7B-Instruct-v1_0词汇表扩展技术:如何将32k扩展到62k完美支持繁体中文
  • FreeRTOS互斥锁的‘坑’你踩过几个?从创建到释放的完整避坑指南与性能调优
  • 过滤减压阀(非常推荐)
  • 从Windows转战openEuler?这10个命令行操作习惯你得先改改
  • 地图增强型智能体:架构、实现与应用场景全解析
  • 2026廊坊卫生间漏水怎么办?卫生间免砸砖防水维修、阳台漏水,外墙渗漏,屋顶漏水 ,地下室漏水,全天响应 - 吉修匠
  • 如何让《空洞骑士》模组管理变得轻松愉快:Scarab模组管理器深度解析
  • 2026 北京名表变现指南:权威鉴定资质齐全,同城上门回收高效省心 - 薛定谔的梨花猫
  • 别再只玩Wi-Fi了!聊聊用NB-IoT(塔石模块)做低功耗物联网项目,如何省心又省钱
  • 2026厦门包包回收实测测评指南:思明正规无损名包回收无套路门店深度测评 - 薛定谔的梨花猫
  • BugKu PRA靶场复盘:除了漏洞利用,Git仓库getshell与FTP弱口令这些“边角料”也别放过
  • 广东省2026年普通专升本投档工作稳步推进,广州商学院普通批次生源质量显著提升 - 速递信息
  • 输入一个关键词,AI 帮你从写稿到出片全自动完成:MoneyPrinterTurbo 深度解析
  • CIC2026开发成本榜单:低代码部署成本横评与开发优化实战
  • 新风换气机厂家/风机箱哪家好?2026风机箱|新风换气机源头厂家推荐:亿恒空调领衔 - 栗子测评
  • 鸿蒙数学 108 篇 第二十六篇:数轴与三才方位对应