当前位置: 首页 > 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.zskr.cn/news/1427347.html

相关文章:

  • 安川焊接机器人保护气智能节气阀
  • 不只是apt install:手把手教你从官方快照源为Debian 9/10/11安装特定旧版内核
  • GIST框架:基于语义拓扑的轻量化室内空间感知与导航实践
  • 别再傻傻分不清了!TPM、TCM、TPCM,这些电脑里的“安全卫士”到底有啥区别?
  • 当测试对象变成大模型:AI 测试与传统软件测试的 8 个核心差异
  • 通知怎么写② | 工作部署通知结构解析与模板
  • 2026西安卫生间瓷砖漏水不砸砖维修公司优选排行 专业防水公司排名推荐(2026年5月防水补漏最新TOP权威排名) - 冠盾建筑修缮
  • Java 异常 - 基础
  • 从屏幕涂鸦到专业演示:ppInk如何重新定义你的数字表达方式
  • MyTV-Android:老旧电视重获新生的终极直播解决方案
  • 如何测试一个 Agent 智能体?工具调用准确率与任务规划能力的评估
  • nAFDM技术:提升高速移动通信频谱效率的创新方案
  • 5分钟快速掌握SMUDebugTool:免费开源AMD Ryzen硬件调试终极指南
  • Claude Code 深度使用40小时复盘:把AI当成你的复利账户
  • 2026年VMware替代趋势观察:国产虚拟化软件云宏CNware的平滑迁移方案
  • W4A8量化技术与LiquidGEMM优化实践
  • Claude商业分析报告失效的最后72小时:当客户流失预测置信度骤降超18%,这4个信号必须立刻干预(实时监控SOP已上线)
  • Lovable区块链平台性能瓶颈突破:5个被90%团队忽略的共识层优化关键点
  • 终极PUBG压枪宏配置指南:5步实现完美无后坐力射击
  • 给程序员的气象学:用代码思维图解大气环流三圈模型(哈德来/费雷尔/极地环流)
  • 打造个人云游戏服务器:Sunshine终极配置实战指南
  • AI 系统的“黄金数据集”:为什么构建高质量的评测集比写自动化还难?
  • Claude Code安装+88api中转配置一篇搞定(Windows)
  • 兰州黄金上门回收平台对比2026 - 黄金回收
  • 智博会上的国产芯:重新定义 Token 价值链路
  • 从Dropout到残差连接:实战中如何为你的基因预测模型选择正则化与防梯度消失策略
  • 其利天下圆满完成第二十届深圳国际金融博览会参展之行
  • EliSpot 技术:疫苗研发不可或缺的核心工具
  • 基于边缘计算与Bun运行时构建高性能新闻聚合系统架构实践
  • 北京金发钹祥金属材料贸易:靠谱的北京不锈钢焊接公司 - LYL仔仔