{{1}}
我有这个简单的代码,它检查字符串查询。但它只检查小写,我该怎么做才能使它也验证任何大写但不反复写这个?
答案 0 :(得分:3)
遗憾的是,Java字符串没有containsIgnoreCase
方法。解决此问题的一种方法是将您的输入转换为小写(或大写,选择),并检查您正在搜索的小写单词:
String toSearch = c.getQuery().toLowerCase();
if (toSearch.contains("update") ||
toSearch.contains("delete") ||
toSearch.contains("truncate") ||
toSearch.contains("drop")) {
throw new MensagemException
(Mensagens.getMensagem("Only select is allowed"));
}
答案 1 :(得分:0)
我会做一些改进:
final String cQuery = c.getQuery(); // retrieve only once
// check null, convert query to lower case so case won't matter anymore
final String cQueryLower = cQuery == null ? null : cQuery.toLowerCase();
if (cQueryLower.contains("update") || cQueryLower.contains("delete") || cQueryLower.contains("truncate") || cQueryLower.contains("drop")) {
throw new MensagemException(Mensagens.getMensagem("Only select is allowed"));
}
你也可以试试这个:if (!cQueryLower.contains("select"))
答案 2 :(得分:0)
您可以使用toLowerCase()
,因此您可以使用小写检查所有大写和小写的变体
if (c.getQuery().toLowerCase().contains("update") || c.getQuery().toLowerCase().contains("delete") || c.getQuery().toLowerCase().contains("truncate")
|| c.getQuery().toLowerCase().contains("drop")) {
throw new MensagemException(Mensagens.getMensagem("Only select is allowed"));
我的意思是它必须像这样工作。我还没有测试过它
答案 3 :(得分:0)
你可以将你的字符串转换为小写,然后保持你正在做的同样的事情,应该是这样的:
String queryToLowerCase = c.getQuery().toLowerCase();
if (queryToLowerCase .contains("update") || queryToLowerCase .contains("delete")
|| queryToLowerCase .contains("truncate") || queryToLowerCase .contains("drop")) {
throw new MensagemException(Mensagens.getMensagem("Only select is allowed"));