字符串的快速匹配
功能需示:匹配字符串,如果該字符串里包含除了字母、數字、+、/、=這些字符以外的任何一個字符就是不符合要求,匹配時間越短越好。
實現思路:將每個字符的ASCII碼與符合要求的比較,不在范圍內的就不符合。這里有個技巧,因為由數據可知,大部都是字母,所以在寫判斷時,先判斷是否在字母范圍內。
當時我們領導說有正則來匹配,結果寫了很多都沒有我直接用的ASCII比對快。
代碼如下:
public class RegTest {public static void main(String[] args) {//除s以外的都不行String str = "AB/CDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";//對應ASCII碼://A-Z : 65-90 :26個//a-z : 97-122//0-9 : 48-57 :10個//+ : 43// /:47// =:61long startTime = System.currentTimeMillis();for(int i=0;i<1000000;i++){RegTest .reg(str);}long endTime = System.currentTimeMillis();System.out.println("共耗時:"+(endTime-startTime));}/*** 判斷字符串* @param str* @return true表示該字符串符合要求,false表示該字符串不符合要求* @author Peter*/public static boolean reg (String str){ char[] array = str.toCharArray();boolean flag = true;for(int i =0;i<array.length ;i++){int c = array[i];if(c > 64 && c <91){continue;}else if(c > 96 && c < 123){continue;}else if(c > 47 && c < 58){continue;}else if(c == 43){continue;}else if(c == 67){continue;}else if(c == 47){continue;}else if(c == 61){continue;}else{flag = false;break;}}return flag;}}總結
- 上一篇: Java对象序列化详解
- 下一篇: Java实现根据权重优先返回(速度较快)