2016-05-19 11 views
2

をトリミングして、私は注釈を持っている:Javaは、文字とJava TestNGのテストの上に注釈を読む空白

public String[] id() default {}; 

C26603と:TestInfoはちょうどid() as String arrayを持っているインタフェースです

@TestInfo(id={ " C26603", " C10047" }) 

C10047は私が割り当てたテストIDです。ここ

テスト構造は、(例えば)のように見える方法である:

CASE 1

@TestInfo(id={ " C26603", " C10047" }) 
public void testDoSomething() { 
    Assert.assertTrue(false); 
} 

同様よりクリーナケースは次のようになります。

ケース2:

@TestInfo(id={ "C26603", "C10047" }) 

このケース2は、ケース1よりも明らかです。このケース2では、テストIDに空白がありません。 これらのIDはどのように取得し、最初にそのC文字が含まれていないことを確認してください。たとえば、最初のIDには26603、2番目には10047が必要です。 id配列にはいくつかのスペースがあります(引用符で囲みます)。私はそのすべて(空白のような)をトリミングし、ちょうどIDを取得したい。私は現在、各IDを処理するためにfor loopを適用しています。一度純粋な数を取得すると、私は第三者API呼び出しを行いたい(APIは入力として純粋な数を期待しています。ここで

は、私が試したものです:

TestInfo annotation = method.getAnnotation(TestInfo.class); 
if(annotation!=null) { 
     for(String test_id: annotation.id()) { 
      //check if id is null or empty 
      if (test_id !=null && !test_id.isEmpty()) { 
     //remove white spaces and check if id = "C1234" or id = "1234" 
        if(Character.isLetter(test_id.trim().charAt(0))) { 
           test_id = test_id.substring(1); 
        } 
        System.out.println(test_id); 
        System.out.println(test_id.trim()); 
      } 
     } 
} 

コードの上に私にそれはケース2

CASE 3のために働く場合1. C26603not 26603を与えます

@TestInfo(id={ " 26603", " 10047" }) 

この場合、開始文字としてCはありませんtest idのactorなので、関数は空白を整えて先に進むほどスマートでなければなりません。

+0

私はあなたのプロフィールで簡単に見ました。あなたはかなり新しいユーザーですから、あなたは[this](http://stackoverflow.com/help/someone-answers)を見ることができますか?人を助けるために人々に報いるなら、あなたはより良い経験をするでしょう。 –

+0

これを覚えておいてください。 –

答えて

5

最も簡単な方法は、単に正規表現数字以外の文字クラス(\D)を使用して、数字ではない、すべてを削除するには、次のようになります。

test_id = test_id.replaceAll("\\D", ""); 
+0

入力 'a3c5e'は '35'になることに注意してください。それが大丈夫なら、これははるかに簡単な解決策です。 – Andreas

+1

私は工学上、私にとって完璧な解決策をやっていました。また、@ Andreas私はちょうど数字の文字が欲しいとこれは動作します。 –

+2

@PratikJaiswal良い。次に、チェックマークをクリックしてこの回答を受け入れる必要があります。私は効果を明確にしていたので、あなたの目を大きく開いてこのオプションを選ぶことができました。 – Andreas

2

私は非常にあなたの方法をデバッグすることをお勧めします。あなたは多くを学ぶでしょう。

あなたはここにあなたのifの文を見てみる場合:

if(Character.isLetter(test_id.trim().charAt(0))) { 
    test_id = test_id.substring(1); 
} 

あなたtest_id = "C1234" は、あなたの条件が真です。しかし、あなたの問題はsubstringになります。

回答:trim it!

test_id = test_id.trim().substring(1); 
+0

これは私にとっても有効です。多くのデバッグはもちろん、多くのことを学んだ。 –

関連する問題