我已经编写了使用正则表达式(根据其他答案)与不使用正则表达式进行比较的测试。在运行Java 1.6的四核OSX10.8计算机上进行的测试
有趣的是,使用正则表达式比手动迭代字符串要慢5到10倍。此外,该
isAlphanumeric2()功能比的速度略快
isAlphanumeric()。一种支持允许扩展Unipre数字的情况,另一种支持仅允许标准ASCII数字的情况。
public class QuickTest extends TestCase { private final int reps = 1000000; public void testRegexp() { for(int i = 0; i < reps; i++) ("ab4r3rgf"+i).matches("[a-zA-Z0-9]"); }public void testIsAlphanumeric() { for(int i = 0; i < reps; i++) isAlphanumeric("ab4r3rgf"+i);}public void testIsAlphanumeric2() { for(int i = 0; i < reps; i++) isAlphanumeric2("ab4r3rgf"+i);} public boolean isAlphanumeric(String str) { for (int i=0; i<str.length(); i++) { char c = str.charAt(i); if (!Character.isLetterOrDigit(c)) return false; } return true; } public boolean isAlphanumeric2(String str) { for (int i=0; i<str.length(); i++) { char c = str.charAt(i); if (c < 0x30 || (c >= 0x3a && c <= 0x40) || (c > 0x5a && c <= 0x60) || c > 0x7a) return false; } return true; }}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)