如果字符串中只包含數字,字母(自定義字符串,名稱,代碼或其他)或GAE鍵,則需要標識字符串。用於區分字符串鍵的正則表達式
這裏是我的代碼:
try {
Class clazz = Class.forName(typeName);
Object one = null;
if(key.matches("[0-9]+")){ // Long
one = store.get(clazz, Long.valueOf(key));
} else if(key.matches("^[0-9A-Za-z._-]{1,500}$")) { // GAE datastore key
one = store.get(clazz, KeyFactory.stringToKey(key));
} else {
one = store.get(clazz, String.valueOf(key));
}
jsonString =new Gson().toJson(one);
} catch (Exception e){
setStatus(Status.SERVER_ERROR_INTERNAL);
e.printStackTrace();
}
這裏的問題是,在的if-else第二條語句捕獲甚至字符串「AAA」我需要區分從GAE數據存儲密鑰的一些方法一個不是GAE密鑰格式的常規字符串。
GAE數據存儲區密鑰和常規字符串之間有什麼區別?什麼是GAE密鑰格式? – 2014-08-29 09:21:28
http://stackoverflow.com/questions/15864116/regular-expression-for-google-app-engine-entity-keys – xybrek 2014-08-29 09:37:14
因此,Datastore字符串與其他字符串的REGEX相同。我建議兩個解決方法,這需要您在調用此方法之前添加代碼:(1)向其他字符串添加一個前綴以用作從數據存儲字符串標識的標記; (2)使用其原始數據存儲區密鑰的信息,並將其包含在字符串中。畢竟這是OOP而不是彙編語言。 – user3852065 2014-08-29 14:00:07