0

ここでのシナリオここでのシナリオは、文字列がローカライズされているかどうか、JavaでSeleniumオートメーションを使用していないかどうかを確認するためのプロパティファイルAを "Key and Value(xpaths) (ResourceBundle)、ここで私は "キーと値(文字列)"で翻訳された文字列を持っています。プロパティファイル内の特定のキー値と文字列のリストを比較する

私はプロパティファイルAを使用し、Web UIの文字列のリストをArrayList関数に読み込んでいます。今、私は特定のキーと文字列のリストを比較したい文字列

  1. 電話

一覧 "例えば:LIST_" とProperties_enファイルのValue(文字列)B.

Properties_enファイルB(ResourceBundleの)

  1. LIST_FIRST_NAME =姓
  2. LIST_LAST_NAME =姓
  3. LIST_PHONE =電話ここ

私はすべてのProperties_enと文字列のリストを比較する必要があります。 "LIST_"を含むプロパティキーと、文字列のリストがすべてProperties_enファイルに存在することを確認します。

これを達成する方法はありますか?

+0

実際にあなたの質問が明確ではないが、リストは、キーと値のペアが含まれています?これは可能ですか?...あなたの質問についてもっと説明してください。 –

+0

何を試しましたか?結果は何ですか?[ask]のヘルプトピックをお読みください。あなた自身の問題を研究し、コードサンプルなどを見つけ、問題を解決するためのコードを書く必要があります。あなたがすべてを行い、まだそれを理解できない場合は、あなたの質問を編集し、あなたが行った研究からメモを追加してください。あなたが試したコードは[mcve]に減らしました。エラーメッセージなど。関連するHTMLを含め、HTMLとコードを適切にフォーマットすることも非常に重要です。 – JeffC

答えて

0

部分文字列を使用して、ArrayListから目的の文字列のみを取り出すことができます。 リストAから、最初の要素はファーストネームです。リストから、最初の要素はLIST_First_Nameであることがわかります。それらを比較するためには、リストB

List[0].substring(5) 

に最初の要素の部分文字列を作成する必要があり、それはファーストネームで最初の6つの文字を、除去した後、残りの文字列を返します。 これはあなたが知りたいと思っていたものだと思います。

0

リソースバンドルファイルを読み込んで、そのキーをセットに格納する必要があります。ファイルを読むときは、各文字列を '='に分割し、最初の部分だけを格納する必要があります:set.add(line.split( '=')[0])。このセットには{LIST_FIRST_NAME、LIST_LAST_NAME、...}が含まれます。

次に、最初のファイルを読み、各フィールドについて、セット内に存在するかどうかをテストする必要があります。しかし、まずこの文字列をLIST_FIELD_NAME_UPPERCASE_WITH_DASHESの形式に変換する必要があります(これはResourceBundleファイルのキーのフォーマットに一致します)。

このフィールドにこのフィールドが含まれている場合、このフィールドはローカライズされています。

概要は次のようである:

private Set<String> constructSet(Reader r) { 
    String line; 
    Set<String> result = new HashSet<>() 
    while(null != (line = reader.readLine()) 
    { 
     String[] keyValue = line.split('='); 
     if (null != keyValue[1]) 
      result.add(keyValue[0]); 
    } 

    return result; 
} 

public boolean test(Reader fileWithStringsReader, Reader resourceBundleReader) 
{ 
    String line; 
    Set<String> localizedKeys = constructSet(resourceBundleReader); 
    while (null != (line = fileWithStringsReader.readLine()) 
    { 
     if (!localizedKeys.contains(transformLine(line)) 
       return false; 
    } 

    return true; 
} 

private String transformLine(String line) 
{ 
    if (null == line) 
     return line; 

    String[] splitLine = line.split(' '); 
    return "LIST_" + StringUtils.join(splitLine, "_").toUpperCase(); 
}