2010-10-18 66 views
0

我有以下模式:如何使用Java標準API從字符串中獲取特定數據?

Jan(COMPANY) &^% Feb(ASP) 567 Mar(INC) 

我想最終的輸出是:

String[] one = {"Jan", "Feb", "Mar"}; 
String[] two = {"COMPANY","ASP","INC"}; 

請幫助。任何人!!?

+0

正則表達式? – 2010-10-18 11:43:23

+1

一個好的,結構良好的問題,其中的要求是提前拼出來的,並且不會改變。您的要求尚不清楚,並且根據您的評論發生了變化。 -1 – 2010-10-18 12:54:54

+0

我必須同意這一點。考慮到這是他的第一個問題,但這是可以理解的。 @OP:我敢打賭你的下一個問題很清楚;) – aioobe 2010-10-18 12:58:56

回答

4

一個完整的例子,其存儲String[] oneString[] 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]); 
    } 
} 
+0

根據OP的要求,這不使用Java字符串API。 – 2010-10-18 11:50:41

+1

我會說,Java正則表達式API是字符串API的一部分。取決於你如何解釋這個問題。 (順便說一句,是字符串API的ArrayList部分?) – aioobe 2010-10-18 11:53:22

+0

不,但我在我的答案中使用了字符串API。我不認爲'java.util.regex'包是Java String API的一部分。如果主題是「使用正則表達式從字符串中獲取特定數據」,那麼我將會回答你的答案。 – 2010-10-18 12:10:46

0

迭代整個字符字符串和存儲你所需要的。

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[] {}); 
相關問題