鸿蒙三方库 | harmony-utils之StrUtil字符串空值判断详解

前言

字符串空值判断是开发中最常见的操作之一,null、undefined、空字符串、纯空格等都需要处理。@pura/harmony-utilsStrUtil 封装了丰富的字符串判断方法。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解,帮助开发者快速掌握并应用到实际项目中。

一、StrUtil判断核心API

StrUtil 提供了以下字符串判断方法:

方法 说明 返回类型 使用场景
isEmpty(str) 是否为空 boolean 空值检查
isNotEmpty(str) 是否非空 boolean 非空判断
isBlank(str) 是否空白 boolean 空白检查
isNotBlank(str) 是否非空白 boolean 有效内容
isNullOrUndefined(str) 是否null或undefined boolean 类型检查

1.1 核心特性

  • 简洁易用:封装复杂逻辑为一行调用,降低使用门槛
  • 类型安全:完整的TypeScript类型定义,编译期即可发现错误
  • 异常处理:内置异常捕获机制,避免运行时崩溃
  • 全面覆盖:覆盖null、undefined、空字符串、纯空格等场景

1.2 isEmpty与isBlank对比

输入 isEmpty isBlank
null true true
undefined true true
'' true true
' ' false true
'hello' false false

二、完整使用步骤

2.1 安装依赖

bash 复制代码
ohpm install @pura/harmony-utils

2.2 空值判断

typescript 复制代码
import { StrUtil } from '@pura/harmony-utils';

Button('isEmpty判断')
  .width('100%')
  .onClick(() => {
    try {
      let r1 = StrUtil.isEmpty('');
      let r2 = StrUtil.isEmpty(null);
      let r3 = StrUtil.isEmpty('hello');
      this.result = `isEmpty(''): ${r1}\nisEmpty(null): ${r2}\nisEmpty('hello'): ${r3}`;
    } catch (e) {
      this.result = '异常: ' + e;
    }
  })

2.3 空白判断

typescript 复制代码
Button('isBlank判断')
  .width('100%')
  .onClick(() => {
    try {
      let r1 = StrUtil.isBlank('');
      let r2 = StrUtil.isBlank('   ');
      let r3 = StrUtil.isBlank('hello');
      this.result = `isBlank(''): ${r1}\nisBlank('   '): ${r2}\nisBlank('hello'): ${r3}`;
    } catch (e) {
      this.result = '异常: ' + e;
    }
  })

三、完整页面示例

typescript 复制代码
import { StrUtil } from '@pura/harmony-utils';

@Entry
@Component
struct StrEmptyDemo {
  @State result: string = '';

  build() {
    Column({ space: 12 }) {
      Button('isEmpty测试').width('100%').onClick(() => {
        let r1 = StrUtil.isEmpty('');
        let r2 = StrUtil.isEmpty('hello');
        this.result = `isEmpty(''): ${r1}, isEmpty('hello'): ${r2}`;
      });
      Button('isBlank测试').width('100%').onClick(() => {
        let r1 = StrUtil.isBlank('   ');
        let r2 = StrUtil.isNotBlank('  hello  ');
        this.result = `isBlank('   '): ${r1}, isNotBlank('  hello  '): ${r2}`;
      });
      Text(this.result).fontSize(14).fontColor('#333333')
    }
    .padding(16)
  }
}

四、进阶用法

4.1 表单校验

typescript 复制代码
import { StrUtil, ToastUtil } from '@pura/harmony-utils';

function validateForm(name: string, phone: string): boolean {
  if (StrUtil.isBlank(name)) {
    ToastUtil.show('请输入姓名');
    return false;
  }
  if (StrUtil.isBlank(phone)) {
    ToastUtil.show('请输入手机号');
    return false;
  }
  return true;
}

4.2 安全取值

typescript 复制代码
function safeGetString(value: string | null | undefined, defaultVal: string): string {
  return StrUtil.isNotBlank(value) ? value! : defaultVal;
}

五、注意事项

  1. null安全:StrUtil方法对null和undefined安全,不会抛异常
  2. 空白字符:isBlank会检查空格、制表符等空白字符
  3. 性能优化:频繁调用时建议缓存结果
  4. 初始化依赖 :使用前需确保 AppUtil.init() 已调用
  5. 链式调用:可与其他StrUtil方法链式使用

六、常见问题

Q1: isEmpty和isBlank有什么区别?

isEmpty只检查null/undefined/空字符串,isBlank还会检查纯空格字符串。

Q2: isNullOrUndefined什么时候用?

当只需要判断是否为null或undefined,不关心空字符串时使用。

Q3: 中文空格算空白吗?

是的,全角空格也属于空白字符,isBlank会返回true。

Q4: 如何判断字符串是否只有数字?

请使用RegexUtil.isNumber()方法。

总结

StrUtil 的字符串判断方法为空值检查提供了便捷支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。开发者可以利用这些方法简化表单校验和安全取值等操作。

本文基于 @pura/harmony-utils 工具库,更多功能请参考官方文档与后续系列文章。

相关推荐
云端漫步198710 小时前
HarmonyOS 互动卡片实战:快递卡片与睡眠卡片完整开发流程
华为·harmonyos
智塑未来11 小时前
鸿蒙6.1隐私安心加倍:加密分享、星盾防诈、应用锁三重保护,守护到位
华为·harmonyos
byte轻骑兵12 小时前
2026手机远程办公:向日葵、TeamViewer、ToDesk鸿蒙适配+传文件+AI审计功能对比
智能手机·harmonyos·todesk·teamviewer·手机远程办公
贾伟康12 小时前
【知律|06】HarmonyOS ArkTS 法律分类实战:让民法、劳动、消费等入口可维护
harmonyos·arkts·arkui·分类设计·多设备
M-Robots echo1 天前
M-CLAW,面向具身智能的机器人任务编排开发框架
机器人·ros·鸿蒙·开源社区·m-robots
M-Robots echo1 天前
王成录:机器人产业下一个十年,拼的是 “系统级智能化” 而非单点算法堆叠
机器人·ros·鸿蒙·开源社区·m-robots·王成录
梦想不只是梦与想1 天前
鸿蒙 测试工具:DevEco Testing(一)
测试工具·harmonyos·testing
大锅盖11 天前
Web 工单要调用相机,第一步不是打开取景框,而是建立能力门禁
前端·数码相机·harmonyos
M-Robots echo1 天前
M-Robots ROS 兼容适配方案,实现存量机器人项目低成本迁移
机器人·ros·鸿蒙·开源社区·m-robots
贾伟康1 天前
【华夏二十四节气|07】HarmonyOS 6.0.2(22) ArkTS 节气搜索实战:多字段匹配与四态闭环
移动开发·harmonyos·arkts·arkui·本地搜索