我有一個包含固定值字段的大字符串,這組字段可以重複0到40次。我想將這個列表解析爲一個數組列表,但我不確定這樣做的最佳方式?如何在java中將字符串解析爲arraylist?
的字符串數據如下,
CountryCode = 2 character
StateProv = 7 characters
PostalCode = 10 characters
BuildingNum = 5 characters
沒有定界符圖案只是重複
任何建議?
我有一個包含固定值字段的大字符串,這組字段可以重複0到40次。我想將這個列表解析爲一個數組列表,但我不確定這樣做的最佳方式?如何在java中將字符串解析爲arraylist?
的字符串數據如下,
CountryCode = 2 character
StateProv = 7 characters
PostalCode = 10 characters
BuildingNum = 5 characters
沒有定界符圖案只是重複
任何建議?
我可能只是重複讀子:(或迴路中的巴迪,或任何...點主要是你有串進行解析)
private static final int PATTERN_LENGTH = 24;
....
List<Location> list = new ArrayList<Location>();
if (text.length() % PATTERN_LENGTH != 0)
{
// throw an exception of some description; you haven't got valid data
}
for (int start = 0; start < text.length(); start += PATTERN_LENGTH)
{
list.add(Location.parse(text.substring(start, start + PATTERN_LENGTH));
}
我嘗試過使用字符數組。我確信它可以進行優化,我希望看到可以應用哪些更改以使其更快。下面是我的測試:
public class Test {
public static String bigString = "USARIZONA85123-123477777USWASHING78987-458711111USCOLORAD11111-111133333";
public List<String> getValues() {
List<String> seperatedValues = new ArrayList<String>();
char[] bigStringArray = bigString.toCharArray();
char[] temp = new char[24];
int j = 0;
for (int i=1; i < bigStringArray.length+1; i++) {
temp[j] = bigStringArray[i-1];
j++;
if (i%24 == 0) {
seperatedValues.add(String.valueOf(temp));
temp = new char[24];
j = 0;
}
}
return seperatedValues;
}
public static void main(String[] args) {
Test test = new Test();
System.out.println(test.getValues());
}
}
爲什麼要把字符串複製到一個數組開始?只需使用String.substring,它不會複製字符。 – 2011-03-08 11:53:46
你可能需要一個地圖,而不是一個列表 – adarshr 2011-03-07 17:05:08
是字符串數據完全像您發佈/每個值之間的新的生產線? – 2011-03-07 17:07:01
給出了示例輸入和預期結果 – smas 2011-03-07 17:28:18