鸿蒙三方库 | 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 工具库,更多功能请参考官方文档与后续系列文章。

相关推荐
贾伟康2 小时前
【口算王|20】HarmonyOS ArkTS AppGallery 发布复查实战:核对包名、版本、设备、素材和离线声明
harmonyos·arkts·appgallery·应用发布·发布审核
ChinaDragon6 小时前
HarmonyOS:Web使用Dsbridge与JavaScript完成交互
harmonyos
思录Echo10 小时前
自助易AI数字人外挂技术剖析|如何解决政企智能客服的多端适配难题?
人工智能·华为·harmonyos
方白羽10 小时前
为什么 Android 非要用 Intent 传值?
android·ios·harmonyos
不爱吃糖的程序媛17 小时前
从 0 到 1:react-native-transformer-text-input 鸿蒙化适配实录
react native·transformer·harmonyos
不爱吃糖的程序媛17 小时前
React Native 三方库鸿蒙适配实战:react-native-emoji-popup(Fabric 自定义组件)从 0 到 1
react native·harmonyos·fabric
贾伟康17 小时前
【口算王|19】HarmonyOS ArkTS 回归测试实战:覆盖启动、空数据、异常输入和重复点击
软件测试·harmonyos·arkts·回归测试·hypium
贾伟康17 小时前
【句匠|09】HarmonyOS ArkTS 学习统计实战:汇总正确率、连续学习和薄弱类型
harmonyos·arkts·appstorage·学习统计·本地统计
贾伟康17 小时前
【口算王|17】HarmonyOS ArkTS 亮暗色与视觉令牌实战:集中颜色、间距和交互状态避免页面割裂
harmonyos·arkts·arkui·深色模式·ui设计
搬砖的kk17 小时前
从 0 到 1:react-native-screenshot-aware 鸿蒙适配实战(RNOH 0.84)
react native·华为·harmonyos