gpt4 book ai didi

java - 正则表达式区分字符串键

转载 作者:行者123 更新时间:2023-11-30 11:15:12 24 4
gpt4 key购买 nike

如果字符串上的字符仅包含数字、字母表(自定义字符串、名称、代码或其他)或其 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 数据存储 key 和不是真正的 GAE key 格式的常规字符串。

最佳答案

您所指的情况(第二个如果)是用于对整个 key (不仅是 key ID)进行网络安全编码的 GAE 便利函数:KeyFactory.stringToKey(..)KeyFactory.keyToString().

尽你所能 see from the source ,此处使用的编码是网络安全的 Base64。这是 alphabet used .

可以用this regex来匹配: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0 -9+/]{3}=)?$.

关于java - 正则表达式区分字符串键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25565193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com