如何判断一个字符串是否为纯 ASCII 字符串:
方法 1:Python 实现
pythondef is_ascii(s): try: s.encode('ascii') return True except UnicodeEncodeError: return False # 或使用 ord() 函数 def is_ascii_v2(s): return all(ord(c) < 128 for c in s)
方法 2:JavaScript 实现
javascriptfunction isASCII(str) { return /^[\x00-\x7F]*$/.test(str); } // 或使用 codePointAt() function isASCIIV2(str) { for (let i = 0; i < str.length; i++) { if (str.codePointAt(i) > 127) { return false; } } return true; }
方法 3:Java 实现
javapublic static boolean isASCII(String str) { return str.chars().allMatch(c -> c < 128); } // 或使用正则表达式 public static boolean isASCIIV2(String str) { return str.matches("\\A\\p{ASCII}*\\z"); }
方法 4:C/C++ 实现
c#include <stdbool.h> #include <string.h> bool is_ascii(const char* str) { for (size_t i = 0; str[i] != '\0'; i++) { if ((unsigned char)str[i] > 127) { return false; } } return true; }
方法 5:Go 实现
gofunc isASCII(s string) bool { for _, r := range s { if r > 127 { return false } } return true }
性能优化建议:
- 提前终止:发现非 ASCII 字符立即返回
- 批量检查:使用 SIMD 指令加速(C/C++)
- 缓存结果:对重复检查的字符串缓存结果
- 使用正则表达式:适合简单场景
注意事项:
- 空字符串视为 ASCII 字符串
- 控制字符(0-31)也是 ASCII
- 注意字符串编码格式
- 考虑 Unicode 组合字符