簡単な質問ですが、回避策がなければ解決策が見つかりません。
sthを解析したい。お気に入り
1) item1;; item3
2) item1;item2;
3) ; item2;
4) ;;
...
特定のインデックスにあるすべてのアイテムを一致させて文字列リストとして返す一致関数があります。
public static List<String> getAllMatchings(String input, String reg, int groupIndex) {
Pattern pattern = Pattern.compile(reg);
Matcher matcher = pattern.matcher(input);
List<String> ls = new ArrayList<String>();
while (matcher.find()) {
if (groupIndex <= matcher.groupCount()) {
ls.add(matcher.group(groupIndex));
}
}
return ls;
}
今、そのような行があるので、{ "item1", "item2", "item3" } のような文字列リストが必要です。しかし、私は - 私のソリューションを使用して - { "item1", "item2", "item3", "" }:
List<String> strList = getAllMatchings(line, "([^;]*)(;|\\z)",1);
したがって、醜い回避策を講じる必要があります。
strList.remove(strList.size()-1);
よくない。しかし、私はその問題の解決策を見つけていません。誰かが私を助けることができますか?
追記:ちなみに。この回避策が機能しない場合があります。ケース 4) では、空の要素が 2 つしかありません。