「サンプルプログラム/正規表現検索」の編集履歴(バックアップ)一覧はこちら
「サンプルプログラム/正規表現検索」(2014/06/08 (日) 12:03:24) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
*Mapから文字列を部分一致検索で取り出す
**概要
Mapで作成したKeyの文字列に対して、部分一致で検索します。
高速化用に、MapのKetに文字列が含まれていない場合に部分一致で検索します。
週間天気予報の都道府県の名前を部分一致で入力しても良いように作れます。
***メモ
部分検索に特化しているため、
より曖昧検索を可能とする場合(千代田区の入力から東京都を出力など)、
事前に意味解析を行った上で、複数回検索を行う方法に切り替えた方が良い。
**ソースコード
#highlight(linenumber,java){{
public class GetJMA {
private Map<String, String> arealist = null;
//TODO: あらかじめarealistにはarealist.put("東京都", "319.html")のようにデータを入れておく。
public boolean executeGetJMAweeklyWeather() {
String area = this.search("東京",arealist);
if (area != null) {
System.out.println("=== " + area + " ===");
}else{
System.out.println("=== 検索失敗 ===");
return false;
}
}
public String search(String inputData, Map<String, String> targetData) {
String outputData = null;
if (targetData.containsKey(inputData)) {
// Keyに含まれる場合の出力
outputData = targetData.get(inputData);
} else {
// Keyに含まれない場合の曖昧検索(部分一致検索)
// Mapから全てのキーをSet型で取得する
Set<String> targetDataSet = targetData.keySet();
Iterator<String> it = targetDataSet.iterator();
while (it.hasNext()) {
// 検索対象の文字列を取得
String targetDataIt = it.next();
if (targetDataIt.matches(".*" + inputData + ".*")) {
// 部分一致です
outputData = targetData.get(targetDataIt);
System.out.println("=== " + targetDataIt + " ===");
} else {
// 部分一致ではありません
}
}
}
return outputData;
}
}
}}
**実行結果
#asciiart(blockquote){{
=== 319.html ===
}}
----
&link_up([ ページの上へ ])
#right(){更新日時:&date()}
タグ:&tags()
----
*MapのKeyを部分一致検索し、valueを取り出す
**概要
Mapで作成したKeyの文字列に対して、部分一致で検索します。
高速化用に、MapのKetに文字列が含まれていない場合に部分一致で検索します。
週間天気予報の都道府県の名前を部分一致で入力しても良いように作れます。
***メモ
部分検索に特化しているため、
より曖昧検索を可能とする場合(千代田区の入力から東京都を出力など)、
事前に意味解析を行った上で、複数回検索を行う方法に切り替えた方が良い。
**ソースコード
#highlight(linenumber,java){{
public class GetJMA {
private Map<String, String> arealist = null;
//TODO: あらかじめarealistにはarealist.put("東京都", "319.html")のようにデータを入れておく。
public boolean executeGetJMAweeklyWeather() {
String area = this.search("東京",arealist);
if (area != null) {
System.out.println("=== " + area + " ===");
}else{
System.out.println("=== 検索失敗 ===");
return false;
}
}
public String search(String inputData, Map<String, String> targetData) {
String outputData = null;
if (targetData.containsKey(inputData)) {
// Keyに含まれる場合の出力
outputData = targetData.get(inputData);
} else {
// Keyに含まれない場合の曖昧検索(部分一致検索)
// Mapから全てのキーをSet型で取得する
Set<String> targetDataSet = targetData.keySet();
Iterator<String> it = targetDataSet.iterator();
while (it.hasNext()) {
// 検索対象の文字列を取得
String targetDataIt = it.next();
if (targetDataIt.matches(".*" + inputData + ".*")) {
// 部分一致です
outputData = targetData.get(targetDataIt);
System.out.println("=== " + targetDataIt + " ===");
} else {
// 部分一致ではありません
}
}
}
return outputData;
}
}
}}
**実行結果
#asciiart(blockquote){{
=== 319.html ===
}}
----
&link_up([ ページの上へ ])
#right(){更新日時:&date()}
タグ:&tags()
----