目录

  • 前言
  • 字符串进阶处理
  • 模板字符串
  • 字符串大小写转换
  • 结束语

    前言

    在使用鸿蒙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开发中的一项基础且重要技能。熟练掌握字符串的基本操作、格式化、本地化和性能优化,开发者可以很好的开发出出更加健壮、高效和易维护的代码,而且通过合理管理字符串资源、熟练使用字符串操作函数以及在用户交互中合理使用字符串,可以大幅提升应用的用户体验和国际化水平。希望本文能帮助大家在鸿蒙开发中更好地处理字符串,构建出更加出色的应用。


灵芸小骏
4.6k 声望302 粉丝

移动开发者。