0

以下の文字列をJavaのリストに変換しようとしていますが、単一のオブジェクトとして扱うため、4つの個別のリストオブジェクトが必要です。

文字列: アプリケーション プロセス「xyz」のウィンドウ「abc」のボタン 1 アプリケーション プロセス「xyz」のウィンドウ「abc」のボタン 2 アプリケーション プロセス「xyz」のウィンドウ「abc」のボタン 3 UI 要素 1 のボタン「Finish」アプリケーションプロセス「xyz」のウィンドウ「abc」のスクロールエリア1

使用される Java コード:

List<String> items = Arrays.asList(resultObject.toString().split("\\s*,\\s*"));
List<String> formattedList = new ArrayList<String>();
for (String item : items) {
    formattedList.add(item);                        
}

予想される出力: 文字列に似ていますが、4 つの異なるリスト オブジェクトにあります

item1 : button 1 of window "abc" of application process "xyz"
item2 :button 2 of window "abc" of application process "xyz"
item3: button 3 of window "abc" of application process "xyz"
item4 :button "Finish" of UI element 1 of scroll area 1 of window "abc" of application process "xyz"
4

2 に答える 2

0

それがどのように構築されているかはわかりませんがresultObject、本当に必要なのはString.split("\\r?\\n").

ところで、正規表現が壊れていると思います。そのため、出力で単一の要素を取得します(入力で一致させることはできません)。に変更すると\\s+、入力全体が単語に分割されます。そのため、そこにエンドラインが必要です。

于 2012-11-14T08:52:49.327 に答える
0

入力文字列が

申請プロセス「xyz」のウィンドウ「abc」のボタン1 申請プロセス「xyz」のウィンドウ「abc」のボタン2 申請プロセス「xyz」のウィンドウ「abc」のボタン3 スクロールエリアのUI要素1のボタン「終了」申請プロセス「xyz」のウィンドウ「abc」の1

その場合、文字列の明確な区切り文字がありません。最後の項目は最初の 3 つと一致していません (同じパターンではありません)。オブジェクトとはどのようなものでresultObject、何を生成しますか? 入力データを投稿していただけると助かります。

上記の文字列を分割したい場合は、これを試すことができます:

String resultObject = new String("button 1 of window \"abc\" of application process \"xyz\" button 2 of window \"abc\" of application process \"xyz\" button 3 of window \"abc\" of application process \"xyz\" button \"Finish\" of UI element 1 of scroll area 1 of window \"abc\" of application process \"xyz\"");
String[] list = resultObject.toString().split("\"xyz\"");
for (String item : list) {                       
    System.out.println(item.trim());
}

以下を出力します。

button 1 of window "abc" of application process
button 2 of window "abc" of application process
button 3 of window "abc" of application process
button "Finish" of UI element 1 of scroll area 1 of window "abc" of application process

または、このリンクを参照してください。

于 2012-11-14T11:07:54.710 に答える