我有以下模式:如何使用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