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

HarmonyOS StrUtil 字符串处理实战:trim 去空格、replace 替换、大小写转换全攻略

文章目录

    • 背景
      • 方法总览
      • trim vs trimAll:只是名字像而已
      • toStr:把任何东西转成字符串
      • replace vs replaceAll:支持正则的字符串替换
      • startsWith / endsWith:判断字符串开头结尾
      • repeat:字符串重复
      • 大小写三件套:toLower、toUpper、capitalize
      • equal / notEqual:字符串比较
      • 写在最后

背景

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

案例demo导航展示

↓↓↓↓↓↓接下来言归正传 ↓↓↓↓
字符串处理是日常开发里频率最高的操作之一。这篇文章专门聊 StrUtil 里那几个"最常用"的方法:trimtrimAllreplacereplaceAll,以及大小写转换三件套toLowertoUppercapitalize

代码很简单,但有几个细节值得注意。

方法总览

trim vs trimAll:只是名字像而已

这两个方法都是"去空格",但去的范围完全不同。

trim():只去掉字符串两端的空格,中间的空格保留。

trimAll():把字符串里所有空格都干掉,包括中间的。

// Demo 中的实际代码this.Btn('trim() 去除两端空格','#27AE60',()=>{constv=StrUtil.trim(this.inputStr);this.addLog(`trim("${this.inputStr}") → "${v}"`);})this.Btn('trimAll() 去除所有空格','#1E8449',()=>{constv=StrUtil.trimAll(this.inputStr);this.addLog(`trimAll("${this.inputStr}") → "${v}"`);})

假设this.inputStr" Hello HarmonyOS "(两端有空格):

  • trim(" Hello HarmonyOS ")"Hello HarmonyOS"(两端空格去掉,中间保留)
  • trimAll(" Hello HarmonyOS ")"HelloHarmonyOS"(所有空格都没了)

什么时候用哪个?

  • 处理用户输入的文本框内容,一般用trim(),保留单词间的空格
  • 处理纯数字、手机号、验证码等不应含空格的字段,用trimAll()更保险

toStr:把任何东西转成字符串

toStr这个方法很实用,它能把nullundefined、数字、布尔值统统转成字符串,还能设置默认值。

this.Btn('toStr(null) → 默认空串','#F39C12',()=>{this.addLog(`toStr(null) → "${StrUtil.toStr(null)}"`);})this.Btn('toStr(123)','#F39C12',()=>{this.addLog(`toStr(123) → "${StrUtil.toStr(123)}"`);})this.Btn('toStr(true)','#F39C12',()=>{this.addLog(`toStr(true) → "${StrUtil.toStr(true)}"`);})this.Btn('toStr(undefined, "N/A")','#F39C12',()=>{this.addLog(`toStr(undefined,"N/A") → "${StrUtil.toStr(undefined,'N/A')}"`);})

实际运行结果

  • toStr(null)""(默认返回空字符串)
  • toStr(123)"123"
  • toStr(true)"true"
  • toStr(undefined, "N/A")"N/A"(第二个参数是默认值)

这个方法在渲染列表数据时特别好用,避免了null.toString()报错的问题。

replace vs replaceAll:支持正则的字符串替换

两个替换方法的区别跟 JavaScript 原生的行为类似:

replace():只替换第一个匹配项。但它支持正则表达式!

replaceAll():替换所有匹配项,通常传字符串。

this.Btn('replace("Hello HarmonyOS","HarmonyOS","World")','#E67E22',()=>{constv=StrUtil.replace('Hello HarmonyOS World','HarmonyOS','ArkTS');this.addLog(`replace → "${v}"`);})this.Btn('replaceAll("aabbcc","b","X")','#E67E22',()=>{constv=StrUtil.replaceAll('aabbcc','b','X');this.addLog(`replaceAll("aabbcc","b","X") → "${v}"`);})this.Btn('replace() 正则替换数字','#D35400',()=>{constv=StrUtil.replace('abc123def456',/\d+/,'NUM');this.addLog(`replace("abc123def456", /\\d+/) → "${v}"`);})

实际运行结果

  • replace('Hello HarmonyOS World', 'HarmonyOS', 'ArkTS')"Hello ArkTS World"
  • replaceAll('aabbcc', 'b', 'X')"aaXXcc"(两个 b 都换了)
  • replace('abc123def456', /\d+/, 'NUM')"abcNUMdef456"(只替换第一串数字)

注意正则替换那个例子,/\d+/只匹配到第一串连续数字123就停了,456没被替换。如果想替换所有数字,要用/\d+/g全局标志。

startsWith / endsWith:判断字符串开头结尾

这两个方法很直观:

this.Btn(`startsWith("${this.inputStr.trim()}", "Hello")`,'#16A085',()=>{consts=this.inputStr.trim();this.addLog(`startsWith("${s}","Hello") →${StrUtil.startsWith(s,'Hello')}`);})this.Btn(`endsWith("${this.inputStr.trim()}", "OS")`,'#16A085',()=>{consts=this.inputStr.trim();this.addLog(`endsWith("${s}","OS") →${StrUtil.endsWith(s,'OS')}`);})

实际运行结果(inputStr 去掉首尾空格后是"Hello HarmonyOS"):

  • startsWith("Hello HarmonyOS", "Hello")true
  • endsWith("Hello HarmonyOS", "OS")true

这两个方法在路由判断、文件类型判断场景很常用,比判断indexOf更直观。

repeat:字符串重复

需要生成重复字符串的时候用,比如生成分隔线、填充占位符:

this.Btn(`repeat("Ha",${this.inputRepeat})`,'#2471A3',()=>{constv=StrUtil.repeat('Ha',this.inputRepeat);this.addLog(`repeat("Ha",${this.inputRepeat}) → "${v}"`);})

repeat("Ha", 3)"HaHaHa"

大小写三件套:toLower、toUpper、capitalize

this.Btn('toLower("Hello World")','#5D6D7E',()=>{this.addLog(`toLower("Hello World") → "${StrUtil.toLower('Hello World')}"`);})this.Btn('toUpper("hello world")','#5D6D7E',()=>{this.addLog(`toUpper("hello world") → "${StrUtil.toUpper('hello world')}"`);})this.Btn('capitalize("hELLO") → 首字母大写其余小写','#5D6D7E',()=>{this.addLog(`capitalize("hELLO") → "${StrUtil.capitalize('hELLO')}"`);})

实际运行结果

  • toLower("Hello World")"hello world"(全小写)
  • toUpper("hello world")"HELLO WORLD"(全大写)
  • capitalize("hELLO")"Hello"(首字母大写,其余全小写)

capitalize要注意:它不是"首字母大写、其余不变",而是"首字母大写、其余全转小写"。如果你传"hELLO",结果是"Hello"而不是"hELLO"首字母大写的"HELLO"

equal / notEqual:字符串比较

这两个方法做的是严格相等判断:

this.Btn('equal("abc","abc")','#884EA0',()=>{this.addLog(`equal("abc","abc") →${StrUtil.equal('abc','abc')}`);})this.Btn('equal("abc","ABC")','#884EA0',()=>{this.addLog(`equal("abc","ABC") →${StrUtil.equal('abc','ABC')}`);})this.Btn('notEqual(1, 2)','#76448A',()=>{this.addLog(`notEqual(1, 2) →${StrUtil.notEqual(1,2)}`);})

实际运行结果

  • equal("abc","abc")true
  • equal("abc","ABC")false(大小写不同)
  • notEqual(1, 2)true(1 不等于 2)

注意notEqual支持非字符串类型的比较,传数字也没问题。

写在最后

这篇覆盖了 StrUtil 最高频的一批方法。几个要记住的点:

  1. trim去两端,trimAll去全部
  2. replace只替换第一个,但支持正则;replaceAll全替换
  3. capitalize是首字母大写 + 其余小写,不是单纯首字母大写

下一篇聊 StrUtil 的编码转换:字符串和 Uint8Array、Base64、十六进制之间的互转。

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

相关文章:

  • 安川焊接机器人保护气智能节气阀
  • 不只是apt install:手把手教你从官方快照源为Debian 9/10/11安装特定旧版内核
  • GIST框架:基于语义拓扑的轻量化室内空间感知与导航实践
  • 从规则引擎到情境感知:构建个性化内容治理系统的技术实践
  • 如何用SMUDebugTool深度掌控你的AMD Ryzen处理器:新手快速入门指南
  • 别再傻傻分不清了!TPM、TCM、TPCM,这些电脑里的“安全卫士”到底有啥区别?
  • 网易云音乐双语歌词下载终极指南:LrcHelper带你轻松获取完美歌词
  • 深度解析:如何通过本地化处理彻底解决Cookie安全风险
  • Quick 自定义应用实战:不写代码,用自然语言搭一个内部数据看板
  • 智慧树刷课插件终极指南:3分钟解放你的学习时间![特殊字符]
  • 当测试对象变成大模型:AI 测试与传统软件测试的 8 个核心差异
  • 神经渲染相机轨迹优化:从理论到实战的完整指南
  • 加密市场HODL投资哲学:构建信念体系应对波动,实现长期价值增长
  • 2026年商务出行,哪家口碑好的品牌能成为你的不二之选?
  • 如何学习和掌握最新的编程技术趋势?
  • SMOKE3D的3D框解码全解析:从网络输出的8个数字到KITTI格式的航向角β
  • Unity SLG游戏开发实战:从零搞定六边形地图的坐标转换与平铺(附完整C#代码)
  • 通知怎么写② | 工作部署通知结构解析与模板
  • 2026年618开门红攻略!5月30日晚8点到底怎么买最便宜?全品类优惠券消费券红包国补多重叠加最划算教程汇总 - 资讯快报
  • 滴滴D²-City数据集二次标注实战:手把手教你构建斑马线+行人+交通灯YOLO训练集
  • 如何突破百度网盘限速:pan-baidu-download 完整指南与实战教程
  • 别再傻傻用第三方软件了!用PowerShell的Get-CimInstance命令,5分钟生成一份完整的电脑硬件配置报告
  • 3D标签云(tagcloud.js 详解)
  • 2026西安卫生间瓷砖漏水不砸砖维修公司优选排行 专业防水公司排名推荐(2026年5月防水补漏最新TOP权威排名) - 冠盾建筑修缮
  • Java 异常 - 基础
  • 电脑shift+delete删除的文件怎么找回,6种恢复技能和视频展示,让你的数据快速恢复!
  • HarmonyOS TempUtil 气象应用实战:多温度单位显示与用户偏好设置开发指南
  • 2026 编程趋强化期 主线框架精通 + 核心 API 使用
  • 终极魔兽争霸3优化指南:WarcraftHelper让你的经典游戏焕然一新
  • 神经渲染对抗训练全解析:从原理到产业,一篇就够了!