我有一个包含固定值字段的大字符串,这组字段可以重复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