HarmonyOS StrUtil 字符串处理实战:trim 去空格、replace 替换、大小写转换全攻略
文章目录背景方法总览trim vs trimAll只是名字像而已toStr把任何东西转成字符串replace vs replaceAll支持正则的字符串替换startsWith / endsWith判断字符串开头结尾repeat字符串重复大小写三件套toLower、toUpper、capitalizeequal / notEqual字符串比较写在最后背景近期发现一款很有意思的HarmonyOS 三方库, 地址 pura/harmony-utils(V1.4.0) , 作者是桃花镇童长老, 我这里也是直接通过该作者公布的源码进行案例编写进行,写了到目前写了一部分demo ,感觉确实很有帮助,这里呢也是开始写一个系列的演示demo 供大家参考。如有帮助可以在OpenHarmony中进行下载安装进行使用哦案例demo导航展示↓↓↓↓↓↓接下来言归正传 ↓↓↓↓字符串处理是日常开发里频率最高的操作之一。这篇文章专门聊 StrUtil 里那几个最常用的方法trim、trimAll、replace、replaceAll以及大小写转换三件套toLower、toUpper、capitalize。代码很简单但有几个细节值得注意。方法总览trim vs trimAll只是名字像而已这两个方法都是去空格但去的范围完全不同。trim()只去掉字符串两端的空格中间的空格保留。trimAll()把字符串里所有空格都干掉包括中间的。// Demo 中的实际代码this.Btn(trim() 去除两端空格,#27AE60,(){constvStrUtil.trim(this.inputStr);this.addLog(trim(${this.inputStr}) → ${v});})this.Btn(trimAll() 去除所有空格,#1E8449,(){constvStrUtil.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这个方法很实用它能把null、undefined、数字、布尔值统统转成字符串还能设置默认值。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)→123toStr(true)→truetoStr(undefined, N/A)→N/A第二个参数是默认值这个方法在渲染列表数据时特别好用避免了null.toString()报错的问题。replace vs replaceAll支持正则的字符串替换两个替换方法的区别跟 JavaScript 原生的行为类似replace()只替换第一个匹配项。但它支持正则表达式replaceAll()替换所有匹配项通常传字符串。this.Btn(replace(Hello HarmonyOS,HarmonyOS,World),#E67E22,(){constvStrUtil.replace(Hello HarmonyOS World,HarmonyOS,ArkTS);this.addLog(replace → ${v});})this.Btn(replaceAll(aabbcc,b,X),#E67E22,(){constvStrUtil.replaceAll(aabbcc,b,X);this.addLog(replaceAll(aabbcc,b,X) → ${v});})this.Btn(replace() 正则替换数字,#D35400,(){constvStrUtil.replace(abc123def456,/\d/,NUM);this.addLog(replace(abc123def456, /\\d/) → ${v});})实际运行结果replace(Hello HarmonyOS World, HarmonyOS, ArkTS)→Hello ArkTS WorldreplaceAll(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,(){conststhis.inputStr.trim();this.addLog(startsWith(${s},Hello) →${StrUtil.startsWith(s,Hello)});})this.Btn(endsWith(${this.inputStr.trim()}, OS),#16A085,(){conststhis.inputStr.trim();this.addLog(endsWith(${s},OS) →${StrUtil.endsWith(s,OS)});})实际运行结果inputStr 去掉首尾空格后是Hello HarmonyOSstartsWith(Hello HarmonyOS, Hello)→trueendsWith(Hello HarmonyOS, OS)→true这两个方法在路由判断、文件类型判断场景很常用比判断indexOf更直观。repeat字符串重复需要生成重复字符串的时候用比如生成分隔线、填充占位符this.Btn(repeat(Ha,${this.inputRepeat}),#2471A3,(){constvStrUtil.repeat(Ha,this.inputRepeat);this.addLog(repeat(Ha,${this.inputRepeat}) → ${v});})repeat(Ha, 3)→HaHaHa大小写三件套toLower、toUpper、capitalizethis.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)→trueequal(abc,ABC)→false大小写不同notEqual(1, 2)→true1 不等于 2注意notEqual支持非字符串类型的比较传数字也没问题。写在最后这篇覆盖了 StrUtil 最高频的一批方法。几个要记住的点trim去两端trimAll去全部replace只替换第一个但支持正则replaceAll全替换capitalize是首字母大写 其余小写不是单纯首字母大写下一篇聊 StrUtil 的编码转换字符串和 Uint8Array、Base64、十六进制之间的互转。