目录
- 前言
- 字符串进阶处理
- 模板字符串
- 字符串大小写转换
结束语
前言
在使用鸿蒙ArkTS开发的时候,数据处理是常见操作,而且处理各种个样的数据格式是日常开发中必会遇到的情况。另外,对字符串相关的处理是日常开发中最常用且重要的,一般情况下对字符串处理是一个基础且繁琐的操作。不用多讲,作为开发者都清楚字符串不仅用于用户界面显示,还用于数据传输、日志记录和本地化等多种场景,在HarmonyOS应用开发中也是至关重要的,个人觉得掌握字符串的操作和管理对于开发高效、易维护的应用也至关重要。那么本文就来详细分享一下关于在HarmonyOS开发中字符串相关的内容,方便大家了解和学习使用。
字符串进阶处理
本篇内容就来分享关于字符串深度处理的操作,这里罗列几个常用的日常开发场景来分享。
1、关于时间的处理
示例:比如要把字符串“2024-11-30 14:30:23”处理为“2024年11月30日 14时30分23秒”,具体示例代码如下所示:
var str = "2024-11-30 14:30:23";
//方法一
var time = str.split(" ");
console.log(time) //["2024-11-30", "14:30:23"]
var timeLeft = time[0];
var timeRight = time[1];
var ary1 = timeLeft.split("-"); // ["2024", "11", "30"]
var ary2 = timeRight.split(":");// ["14", "30", "23"]
var res = ary1[0] + "年" + ary1[1] + "月" + ary1[2] + "日" + " " + ary2[0] + "时" + ary2[1] + "分" + ary2[2] + "秒"
console.log(res) //"2024年11月30日 14时30分23秒"
//方法二
//补零
function zeroFill(number){
return number < 10 ? "0" + number : number;
}
var ss = zeroFill(11);
var res2 = zeroFill(ary1[0])+"年"+zeroFill(ary1[1])+"月"+zeroFill(ary1[2])+"日"+" "+zeroFill(ary2[0])+"时"+zeroFill(ary2[1])+"分"+zeroFill(ary2[2])+"秒"
//"2024年11月30日 14时30分23秒"
2、关于问号参数处理
再来分享一个关于网络链接中问号参数处理的情况,这里是关于queryURLParams的 问号参数处理,具体示例代码如下所示:
/*
处理方法
var str ="https://www.baidu.com?name=sanzhanggui&age=18&id=666";
{ name:"sanzhanggui", age:18, id:666 }
*/
function urlParams(str){
var obj={};
var paramsStr=str.split("?")[1];
if(paramsStr){
//[name=sanzhanggui,age=18,id=666]
var paramsArray=paramsStr.split("&");
for(var i=0;i<paramsArray.length;i++){
//name=sanzhanggui
var item=paramsArray[i];
//[name,sanzhanggui]
var itemArray=item.split("=");
obj[itemArray[0]]=itemArray[1];
}
}
return obj;
}
var str ="https://www.baidu.com?name=sanzhanggui&age=18&id=666";
var result= urlParams(str);
3、字符串转换处理
这里分享一个比较常用的场景,比如在传递的参数中包含字符串,就转换成数字;但是如果字符串是非有效的数字,那就直接忽略。具体的示例代码如下所示:
//处理方法一
function fun(){
var total=0;
for(var i=0;i<arguments.length;i++){
var item=Number(arguments[i]);
isNaN(item)?0:total+=item
}
return total;
}
//处理方法二
function fun(...arg){
return eval(arg.filter((item)=>!isNaN(item)).join("+"))
}
//具体使用的地方
var result=fun(1,2,3,"3","3px");
4、字符串使用场景:邮箱校验
接下来再来分享一个关于实际开发中必遇到的使用场景,关于邮箱是否输入正确的校验处理,具体示例代码如下所示:
void main(String[] args) {
let email:String = "example@email.com";
let regex:RegExp = "^\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(email);
if (matcher.matches()) {
System.out.println("邮箱格式正确");
} else {
System.out.println("邮箱格式错误");
}
}
5、字符串使用场景:手机号校验
手机号校验也是日常开发中必备功能,具体示例如下所示:
import promptAction from '@ohos.promptAction';
export class RegExpUtils {
// 手机号正则字符串
PHONE: string = '((1[3|4|5|7|8][0-9]{9})$)'
// 手机号正则
checkPhone(phone: string): boolean {
if (phone.length === 0) {
promptAction.showToast({
message: '请输入手机号码',
bottom: 100,
duration: 1000
})
return false
}
let reg: RegExp = new RegExp(this.PHONE);
if (!reg.test(phone)) {
promptAction.showToast({
message: '请输入正确格式 11 位的手机号码!',
bottom: 100,
duration: 1000
})
return false
}
return true
}
}
//具体使用
if (!this.regExpUtils.checkPhone(this.phone ?? "")) {
return
}
6、字符串使用场景:身份证校验
身份证校验也是日常开发中必备功能,具体示例如下所示:
import promptAction from '@ohos.promptAction';
export class RegExpUtils {
// 身份证正则字符串
DATE: string = '((0[1-9])|(10|11|12))((0[1-9])|(1[0-9])|(2[0-9])|(30|31))'
CARD: string = '^(([1-9]{1})([0-9]{5})(18|19|20)[0-9]{2}(' + this.DATE + '))([0-9]{4})|([0-9]{3}(x|X))$'
/*
* 身份证正则
* */
checkIdCard(card: string): boolean {
if (card.length === 0) {
promptAction.showToast({
message: '请输入身份证号码',
bottom: 100,
duration: 1000
})
return false
}
let reg = RegExp(this.CARD);
if (card.length != 18 || !reg.test(card)) {
promptAction.showToast({
message: '请输入正确身份证号码',
bottom: 100,
duration: 1000
})
return false
}
return true
}
}
//具体使用
if (!this.regExpUtils.checkIdCard(this.cardId ?? "")) {
return
}
模板字符串
关于模版字符串,往往用在需要拼接字符串的地方,以及拼接变量的时候。
作用: 拼接字符串和变量
写法: ${变量}用反引号包裹
具体示例:
let name = 'sanzhanggui'
console.log('',`我的名字${name}`)
字符串大小写转换
实际开发中,会在某些场景下,需要对字符串进行大小写的转换,比如银行类app使用的商户号,需要把字母转换为大写。这里分享一个示例:
let string = "hello, world!";
let upper = string.toUpperCase(); // "HELLO, WORLD!" 转换为大写
let lower = string.toLowerCase(); // "hello, world!" 转换为小写
结束语
通过上文关于HarmonyOS开发中字符串深度专辑的使用介绍,可以看到字符串处理是HarmonyOS开发中的一项基础且重要技能。熟练掌握字符串的基本操作、格式化、本地化和性能优化,开发者可以很好的开发出出更加健壮、高效和易维护的代码,而且通过合理管理字符串资源、熟练使用字符串操作函数以及在用户交互中合理使用字符串,可以大幅提升应用的用户体验和国际化水平。希望本文能帮助大家在鸿蒙开发中更好地处理字符串,构建出更加出色的应用。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。