在任何標準庫中,是否有字符類(字母,數字,字母數字)的定義?我檢查,如果字符串只包含字母數字字符或冒號:Java - 靜態定義的字符列表
StringUtils.containsOnly(input, ALPHA_NUMERIC + ":");
我可以定義自己ALPHA_NUMERIC,但似乎常用的字符類會在標準庫中進行定義,但我一直無法找到定義。
編輯:我確實考慮過正則表達式,但對於我的特殊用例而言,執行時間非常重要,而且簡單的掃描效率更高。
編輯:下面是測試結果,使用正則表達式,CharMatcher,和一個簡單的掃描(使用相同的一組用於每個測試的有效/無效的輸入字符串的):
有效輸入字符串:
CharMatcher,民運行:1000000,有效的字符串:真,時間(ms):
正則表達式,民運行:1000000,有效的字符串:真,時間(ms):
掃描,民運行:1000000,有效的字符串:真,時間(ms):
無效的輸入字符串:
CharMatcher,民運行:1000000,有效字符串:假的,時間(ms):
的Regex,貨號運行:1000000,弗吉尼亞州蓋字符串:假的,時間(ms):
掃描,貨號運行:1000000,有效字符串:假的,時間(ms):
這裏是所執行的代碼掃描:
public boolean matches(String input) {
for(int i=0; i<input.length(); i++) {
char c = input.charAt(i);
if(!Character.isLetterOrDigit(c) && c != ':') {
return false;
}
}
return true;
}
編輯:我重新編譯爲一個獨立的程序(我是通過蝕運行):
CharMatcherTester中,Nu米運行:1000000,有效字符串:真,時間(ms):418
RegexTester,貨號運行:1000000,有效字符串:真,時間(ms):812
ScanTester,貨號運行:1000000,有效字符串:真,時間(ms):88
CharMatcherTester,民運行:1000000,有效的字符串:假的,時間(ms):142
RegexTester,民運行:1000000,有效的字符串:假的,時間( ms):223
ScanTester,Num運行:1000000,有效字符串:false,Time( MS):32
來源:https://bitbucket.org/jdeveloperw/testing(這是我第一次發佈的測試結果如此,這樣的評論是值得讚賞)
據我所知沒有這樣的圖書館存在。 – 2012-04-06 00:40:46
這是你正在尋找的:[Character.getType(int)](http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Character.html#getType%28int% 29)和[Character.getType(char)](http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Character.html#getType%28char%29)。 – 2012-04-06 03:19:25
你認爲「äöüÄÜÖßø¢...」是否爲英文字母? – 2012-04-06 03:24:04