これは、探しているものの解決策を示すプログラムです。getHashmap()
選択文字列と選択引数を引数として取り、探しているもののハッシュマップを返すメソッドをよく見てください。あなたのデータセットを例として使用しました。探しているものによっては、ソリューションに一歩近づくはずです。唯一の注意点は、「=」に加えて別の論理比較を使用する場合は、正規表現を変更する必要があることです。それがあなたにとってうまくいくかどうか教えてください
public static void main(String[] args) {
String sel = "a=? and b=?";
String[] ags = new String[] { "2", "hello" };
HashMap<String, String> result = getHashmap(sel, ags);
Iterator it = result.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pairs = (Map.Entry) it.next();
System.out.println(pairs.getKey() + " = " + pairs.getValue());
it.remove();
}
}
public static HashMap<String, String> getHashmap(String selection,
String[] selectionArgs) {
HashMap<String, String> result = new HashMap<String, String>();
Pattern pattern = Pattern.compile("[a-z]*(\\s)*=\\?",
Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(selection);
int pos = 0;
while (matcher.find()) {
String[] selParts = matcher.group(0).split("=");
result.put(selParts[0], selectionArgs[pos]);
pos++;
}
return result;
}