-4

SWTBotTree.expandNode (final String nodeText, final boolean recursive) 関数を、必ずしもまったく同じではない String で使用したいと思います。文字列の先頭は同じですが、末尾は異なる場合があります。regで解決できると思いました。指数 「文字列の定数部分」+「.*」のようなものですが、reg として認識されませんでした。指数 私は何をすべきか??

4

2 に答える 2

3

(やや推測的ですが、うまくいけば役に立ちます。)

「文字列の定数部分」に正規表現で特別な意味を持つ文字が含まれている場合、それは簡単に問題になる可能性があります。これを解決する方法は、を使用することPattern.quoteです。例えば:

// ^ to anchor the match to the start of the line/string. May not be required.
Pattern pattern = Pattern.compile("^" + Pattern.quote(expectedPrefix) + ".*");

もちろん、これは正規表現を使用する必要がある場合にのみ使用します。それ以外の場合は、次を使用します。

if (actualText.startsWith(expectedText))
于 2013-01-24T14:36:11.660 に答える
2

あなたがこれをどのようにやろうとしているのか正確にはわかりませんが、もしあなたがやっているなら:

swtBotTree.expandNode("constant part of string" + ".*", true);

その場合、あなたはそれを間違っている可能性が高いです...

expandNodeのjavadocは、正規表現をサポートしているとは言及していません...

ソース(検索時に見つけバージョン)を調べると、expandNodeと呼ばれる別の方法が使用されgetItem(...)ます。そのメソッドは次のようなことを行いif (item.getText().equals(nodeText))ます。つまり、そのメソッドは、正規表現の一致ではなく、文字列の等価比較を使用します。

Java では、正規表現がサポートされています ( Pattern javadocおよびMatcher javadocまたはString.matches(...) javadocを参照してください) が、その機能が実装で使用されている場合に限ります。通常の文字列を期待するメソッドに正規表現を渡して、正規表現マッチングを行うことを期待することはできません。

簡潔な答え:

Java には正規表現機能を提供するクラスがありますが、SWTBotTree.expandNode(String, boolean)メソッドは正規表現をサポートしていません。

編集:

私が理解している限り、SWTBotTree正規表現/ワイルドカード検索を行うための直接的なサポートはありません。

これをどうしてもやりたい場合は、次のようなことを試すことができます。

 for(SWTBotTreeItem item : swtBotTree.getAllItems()){
     if(item.getText().matches("some regex goes here")){
         item.expand();
     }
 }
于 2013-01-24T15:22:26.457 に答える