これが私がやろうとしていることです。ユーザーは、「*」または「?」を含む検索文字列を入力できます。ワイルドカード文字。これは通常の文字列では機能しますが、数字を含む文字列では機能しません。
例: 414D512052524D2E535441524B2E4E45298B8751202AE908 1208
その 16 進文字列のセクションを探すと、false が返されます。「1208」文字列で「120」または「208」を探すと失敗します。
現在、ユーザーが「w?f」と入力すると、私の正規表現パターンは次のようになります: '\bw.?f\b'
私は現時点で(明らかに)正規表現に精通していませんが、誰かが私が必要とする方法で数字を処理する必要があるかもしれないポインタをいただければ幸いです - ありがとう!
問題のコード:
/**
*
* @param searchString
* @param strToBeSearched
* @return
*/
public boolean findString(String searchString, String strToBeSearched) {
Pattern pattern = Pattern.compile(wildcardToRegex(searchString));
return pattern.matcher(strToBeSearched).find();
}
private String wildcardToRegex(String wildcard){
StringBuffer s = new StringBuffer(wildcard.length());
s.append("\\b");
for (int i = 0, is = wildcard.length(); i < is; i++) {
char c = wildcard.charAt(i);
switch(c) {
case '*':
s.append(".*");
break;
case '?':
s.append(".?");
break;
default:
s.append(c);
break;
}
}
s.append("\\b");
return(s.toString());
}