当前位置: 首页 > news >正文

鸿蒙NEXT开发字符工具类(ArkTs)

import { i18n } from '@kit.LocalizationKit';

/**
 * 字符工具类
 * author: 鸿蒙布道师
 * since: 2025/03/31
 */
export class CharUtil {
  /**
   * 判断字符串是否是单个字符
   * @param char 输入字符串
   * @returns 是否为单个字符
   */
  private static isSingleChar(char: string): boolean {
    return typeof char === 'string' && char.length === 1;
  }

  /**
   * 判断字符串是否是数字
   * @param char 单个字符
   * @returns 是否为数字
   */
  static isDigit(char: string): boolean {
    return CharUtil.isSingleChar(char) && i18n.Unicode.isDigit(char);
  }

  /**
   * 判断字符串是否是字母
   * @param char 单个字符
   * @returns 是否为字母
   */
  static isLetter(char: string): boolean {
    return CharUtil.isSingleChar(char) && i18n.Unicode.isLetter(char);
  }

  /**
   * 判断字符串是否是小写字母
   * @param char 单个字符
   * @returns 是否为小写字母
   */
  static isLowerCase(char: string): boolean {
    return CharUtil.isSingleChar(char) && i18n.Unicode.isLowerCase(char);
  }

  /**
   * 判断字符串是否是大写字母
   * @param char 单个字符
   * @returns 是否为大写字母
   */
  static isUpperCase(char: string): boolean {
    return CharUtil.isSingleChar(char) && i18n.Unicode.isUpperCase(char);
  }

  /**
   * 判断字符串是否是空格符
   * @param char 单个字符
   * @returns 是否为空格符
   */
  static isSpaceChar(char: string): boolean {
    return CharUtil.isSingleChar(char) && i18n.Unicode.isSpaceChar(char);
  }

  /**
   * 判断字符串是否是空白符
   * @param char 单个字符
   * @returns 是否为空白符
   */
  static isWhitespace(char: string): boolean {
    return CharUtil.isSingleChar(char) && i18n.Unicode.isWhitespace(char);
  }

  /**
   * 判断字符串是否是从右到左语言的字符
   * @param char 单个字符
   * @returns 是否为从右到左语言的字符
   */
  static isRTL(char: string): boolean {
    return CharUtil.isSingleChar(char) && i18n.Unicode.isRTL(char);
  }

  /**
   * 判断字符串是否是表意文字
   * @param char 单个字符
   * @returns 是否为表意文字
   */
  static isIdeograph(char: string): boolean {
    return CharUtil.isSingleChar(char) && i18n.Unicode.isIdeograph(char);
  }

  /**
   * 判断是否为空白符(包括空格、制表符、全角空格和不间断空格)
   * @param c 字符的 Unicode 编码值
   * @returns 是否为空白符
   */
  static isBlankChar(c: number): boolean {
    const char = String.fromCharCode(c); // 将 Unicode 编码转换为字符
    return (
      CharUtil.isWhitespace(char) ||
      CharUtil.isSpaceChar(char) ||
        c === 0xfeff || // 字节顺序标记 (BOM)
        c === 0x202a || // 左至右嵌入 (LRE)
        c === 0x0000    // 空字符
    );
  }

  /**
   * 判断字符是否位于 ASCII 范围内(0-127)
   * @param char 字符
   * @returns 是否位于 ASCII 范围内
   */
  static isAscii(char: string): boolean {
    return CharUtil.isSingleChar(char) && char.charCodeAt(0) < 128;
  }
}


代码如下:
import { i18n } from '@kit.LocalizationKit';

/**
 * 字符工具类
 * author: 鸿蒙布道师
 * since: 2025/03/31
 */
export class CharUtil {
  /**
   * 判断字符串是否是单个字符
   * @param char 输入字符串
   * @returns 是否为单个字符
   */
  private static isSingleChar(char: string): boolean {
    return typeof char === 'string' && char.length === 1;
  }

  /**
   * 判断字符串是否是数字
   * @param char 单个字符
   * @returns 是否为数字
   */
  static isDigit(char: string): boolean {
    return CharUtil.isSingleChar(char) && i18n.Unicode.isDigit(char);
  }

  /**
   * 判断字符串是否是字母
   * @param char 单个字符
   * @returns 是否为字母
   */
  static isLetter(char: string): boolean {
    return CharUtil.isSingleChar(char) && i18n.Unicode.isLetter(char);
  }

  /**
   * 判断字符串是否是小写字母
   * @param char 单个字符
   * @returns 是否为小写字母
   */
  static isLowerCase(char: string): boolean {
    return CharUtil.isSingleChar(char) && i18n.Unicode.isLowerCase(char);
  }

  /**
   * 判断字符串是否是大写字母
   * @param char 单个字符
   * @returns 是否为大写字母
   */
  static isUpperCase(char: string): boolean {
    return CharUtil.isSingleChar(char) && i18n.Unicode.isUpperCase(char);
  }

  /**
   * 判断字符串是否是空格符
   * @param char 单个字符
   * @returns 是否为空格符
   */
  static isSpaceChar(char: string): boolean {
    return CharUtil.isSingleChar(char) && i18n.Unicode.isSpaceChar(char);
  }

  /**
   * 判断字符串是否是空白符
   * @param char 单个字符
   * @returns 是否为空白符
   */
  static isWhitespace(char: string): boolean {
    return CharUtil.isSingleChar(char) && i18n.Unicode.isWhitespace(char);
  }

  /**
   * 判断字符串是否是从右到左语言的字符
   * @param char 单个字符
   * @returns 是否为从右到左语言的字符
   */
  static isRTL(char: string): boolean {
    return CharUtil.isSingleChar(char) && i18n.Unicode.isRTL(char);
  }

  /**
   * 判断字符串是否是表意文字
   * @param char 单个字符
   * @returns 是否为表意文字
   */
  static isIdeograph(char: string): boolean {
    return CharUtil.isSingleChar(char) && i18n.Unicode.isIdeograph(char);
  }

  /**
   * 判断是否为空白符(包括空格、制表符、全角空格和不间断空格)
   * @param c 字符的 Unicode 编码值
   * @returns 是否为空白符
   */
  static isBlankChar(c: number): boolean {
    const char = String.fromCharCode(c); // 将 Unicode 编码转换为字符
    return (
      CharUtil.isWhitespace(char) ||
      CharUtil.isSpaceChar(char) ||
        c === 0xfeff || // 字节顺序标记 (BOM)
        c === 0x202a || // 左至右嵌入 (LRE)
        c === 0x0000    // 空字符
    );
  }

  /**
   * 判断字符是否位于 ASCII 范围内(0-127)
   * @param char 字符
   * @returns 是否位于 ASCII 范围内
   */
  static isAscii(char: string): boolean {
    return CharUtil.isSingleChar(char) && char.charCodeAt(0) < 128;
  }
}

相关文章:

  • 大模型高质量rag构建:A Cheat Sheet and Some Recipes For Building Advanced RAG
  • Java 大视界 -- Java 大数据在智能农业无人机植保作业路径规划与药效评估中的应用(165)
  • 华为eNSP:单区域集成IS-IS
  • 六十天Linux从0到项目搭建(第二十三天)(命名管道)
  • 【大模型基础_毛玉仁】5.5 模型编辑应用
  • 第一章:初识ROS_《ROS机器人开发实践》
  • ISIS【路由协议讲解】-通俗易懂!
  • 216. 组合总和 III 回溯
  • 大小端存储的意思与区别
  • 相机镜头景深
  • 程序化广告行业(47/89):竞价指标剖析与流量对接要点
  • 脑机交互安全:如何防止恶意脑电波指令注入
  • 算法导论(动态规划)——路径问题
  • Laravel Trait 实现 统一JSON 响应格式
  • CSS定位
  • 观察者模式在Java微服务间的使用
  • 学习大模型需要具备哪些技术、知识和基础
  • 【蓝桥杯速成】| 17.完全背包(一维easy版)
  • 题解:P8667 [蓝桥杯 2018 省 B] 递增三元组 (暴力+二分)
  • DeepSeek原生稀疏注意力(Native Sparse Attention, NSA)算法介绍
  • 把两个网站合并到一个网页/企业推广公司
  • 网站记录登录账号怎么做/如何查询网站收录情况
  • 汕头保洁公司/汕头seo网站建设
  • 网站备案简介怎么写/广告推广营销网站
  • 网站seo工作内容/搜索引擎优化的主要特征
  • 近一周国内重大新闻/宁波seo网络推广主要作用