getFirstCharPinyin static method

String? getFirstCharPinyin(
  1. String str, {
  2. bool enableAZ = true,
  3. bool enableNum = true,
})

会忽略str开头的空白符

  • 如果str的首字符为中文字符,将转换返回该字符的拼音
  • 如果 str 为字母,将转为小写并返回该字母
  • 如果 str 为数字,则返回数值
  • 如果 str 为空、无法转为拼音,则返回 null

Implementation

static String? getFirstCharPinyin(
  String str, {
  bool enableAZ = true,
  bool enableNum = true,
}) {
  if (str.isEmpty) {
    return null;
  }
  // 移除开头的空白符
  str.replaceFirst(r"^\s+", "");
  if (str.isEmpty) {
    return null;
  }
  final code = str.codeUnitAt(0);
  if (isCode_num(code)) {
    if (enableNum) {
      return str[0];
    } else {
      return null;
    }
  } else if (isCode_az(code)) {
    if (enableAZ) {
      return str[0];
    } else {
      return null;
    }
  } else if (isCode_AZ(code)) {
    if (enableAZ) {
      return String.fromCharCode(code + (CODE_a - CODE_A));
    } else {
      return null;
    }
  } else {
    final result = PinyinHelper.getFirstWordPinyin(str);
    if (result.isNotEmpty) {
      // 非空
      final code = result.codeUnitAt(0);
      if (isCode_AZaz(code)) {
        // 第一个字符在 [A-Za-z]
        return result.toLowerCase();
      }
    }
    return null;
  }
}