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

发布于:2025-04-03 ⋅ 阅读:(19) ⋅ 点赞:(0)
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;
  }
}


网站公告

今日签到

点亮在社区的每一天
去签到