0

我正在尝试将以下字符串转换为 Java 中的列表,但将其作为单个对象,我需要四个单独的列表对象。

字符串:应用程序“xyz”窗口“abc”的按钮1 应用程序“xyz”窗口“abc”的按钮2 应用程序“xyz”窗口“abc”的按钮3 UI元素1的“完成”按钮应用程序“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);                        
}

预期输出:类似于字符串,但在四个不同的列表对象中

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

如果您的输入字符串是

应用程序“xyz”窗口“abc”的按钮1 应用程序“xyz”窗口“abc”的按钮2 应用程序“xyz”窗口“abc”的按钮3 滚动区域的UI元素1的“完成”按钮应用程序“xyz”窗口“abc”的1

那么你没有明确的字符串分隔符。最后一项与前三项不一致(模式不一样)。什么样的对象是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 回答
0

不知道它resultObject是如何构造的,但你真正需要的是一个String.split("\\r?\\n").

顺便说一句,我认为你的正则表达式坏了,这就是为什么你在输出中得到一个元素(它不能在输入上匹配)。如果您将其更改为\\s+,它会将您的整个输入拆分为单词。这就是为什么你需要那里的端线。

于 2012-11-14T08:52:49.327 回答