我有以下模式:如何使用Java标准API从字符串中获取特定数据?
Jan(COMPANY) &^% Feb(ASP) 567 Mar(INC)
我想最终的输出是:
String[] one = {"Jan", "Feb", "Mar"};
String[] two = {"COMPANY","ASP","INC"};
请帮助。任何人!!?
我有以下模式:如何使用Java标准API从字符串中获取特定数据?
Jan(COMPANY) &^% Feb(ASP) 567 Mar(INC)
我想最终的输出是:
String[] one = {"Jan", "Feb", "Mar"};
String[] two = {"COMPANY","ASP","INC"};
请帮助。任何人!!?
一个完整的例子,其存储String[] one
和String[] two
的结果是这样的:
import java.util.*;
import java.util.regex.*;
public class Main {
public static void main(String[] args) {
String str = "Jan(COMPANY) &^% Feb(ASP) 567 Mar(INC)";
ArrayList<String> monthArr = new ArrayList<String>();
ArrayList<String> dataArr = new ArrayList<String>();
// Part 1: \\b(\\p{Alpha}+): Word boundary, one or more characters
// Part 2: \\(([^)]+)\\): "(", anything but ")" one or more times, ")"
Pattern p = Pattern.compile("\\b(\\p{Alpha}+)\\(([^)]+)\\)");
Matcher m = p.matcher(str);
while (m.find()) {
monthArr.add(m.group(1)); // m.group(1) = "Jan", "Feb" and so on
dataArr.add(m.group(2)); // m.group(2) = "COMPANY, "ASP", and so on
}
String[] one = monthArr.toArray(new String[0]);
String[] two = dataArr.toArray(new String[0]);
}
}
根据OP的要求,这不使用Java字符串API。 – 2010-10-18 11:50:41
我会说,Java正则表达式API是字符串API的一部分。取决于你如何解释这个问题。 (顺便说一句,是字符串API的ArrayList部分?) – aioobe 2010-10-18 11:53:22
不,但我在我的答案中使用了字符串API。我不认为'java.util.regex'包是Java String API的一部分。如果主题是“使用正则表达式从字符串中获取特定数据”,那么我将会回答你的答案。 – 2010-10-18 12:10:46
迭代整个字符字符串和存储你所需要的。
String s = "Jan(COMPANY) &^% Feb(ASP) 567 Mar(INC)";
ArrayList<String> monthsList = new ArrayList<String>();
ArrayList<String> companyList = new ArrayList<String>();
StringBuilder b = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
switch (c) {
case ' ':
b.setLength(0);
break;
case '(':
monthsList.add(b.toString());
b.setLength(0);
break;
case ')':
companyList.add(b.toString());
b.setLength(0);
break;
default:
b.append(c);
break;
}
}
String[] monthArray = monthsList.toArray(new String[] {});
String[] companyArray = companyList.toArray(new String[] {});
正则表达式? – 2010-10-18 11:43:23
一个好的,结构良好的问题,其中的要求是提前拼出来的,并且不会改变。您的要求尚不清楚,并且根据您的评论发生了变化。 -1 – 2010-10-18 12:54:54
我必须同意这一点。考虑到这是他的第一个问题,但这是可以理解的。 @OP:我敢打赌你的下一个问题很清楚;) – aioobe 2010-10-18 12:58:56