最初に一連の「+」を使用して文字列をフィルタリングするプログラムがあります。例えば:
+++Adam is working very well.
++Adam is working well.
+Adam is doing OK.
特定のケース (つまり、プラス記号を 1 つだけ、プラス記号を 2 つだけ、プラス記号を 3 つだけ) だけをピックアップするにはどうすればよいですか? 通常、+ で始まるものはすべて返されます。
次の正規表現パターンをコンパイルしましたが、返されるのは 1 つだけ (通常は 2 つの ++) か、すべてです。
public static String regexpluschar = "^\\Q+\\E{1}[\\w <]";
public static String regexpluspluschar = "^\\Q+\\E{2}[\\w <]";
public static String regexpluspluspluschar = "^\\Q+\\E{3}[\\w <]";
Pattern plusplusplus = Pattern.compile(regexpluspluspluschar);
Pattern plusplus = Pattern.compile(regexpluspluschar);
Pattern plus = Pattern.compile(regexpluschar);
次に、Matcher クラスを使用して検索しようとしました。
Matcher matcherplusplusplus = plusplusplus.matcher(check);
Matcher matcherplusplus = plusplus.matcher(check);
Matcher matcherplus = plus.matcher(check);
//OK we have 3+'s
if ((matcherplusplusplus.find())==true){
System.out.println("Filtering 3 +s.");
System.out.println("filter is " + filter + " in the 3 + filter.");
String toChange = getItem(i);
setItemFiltered(i, toChange);
}
//OK - we have 2 +'s
if ((matcherplusplus.find())==true){
System.out.println("Filtering 2 +s.");
System.out.println("filter is " + filter + " in the 2 + filter.");
String toChange = getItem(i);
setItemFiltered(i, toChange);
}
//OK - we have 1 +'s
if ((matcherplus.find())==true){
System.out.println("Filtering 1 +.");
System.out.println("filter is " + filter + " in the 1 + filter.");
String toChange = getItem(i);
setItemFiltered(i, toChange);
}
非常に興味深いことに、上記の if は、いくつかの JTextField を循環する for ループに埋め込まれています。完全なコード: http://pastebin.ca/2199327