我正在尝试使用StringTokenizer来设置一个逗号作为分隔符,其中包含文件中的行,每个行都包含一个邮政编码和城市(e.x。01221,华盛顿特区),但我不希望第二个逗号作为分隔符,因为它是城市名称的一部分。我有两个类,我读入了邮政编码和城市名称,但我不确定如何正确使用记号赋予器来设置邮政编码和城市。我希望返回每个类的邮政编码和城市的一个数组,所以我不想将它们组合到一个类中。我也不确定是否应该将标记器放在我的main方法中。
public static String[] getZipCodes (File zips, Scanner hi, int d)
{
//creating array of zip codes with the length of the number of lines
String[] zipCodes=new String[d];
//Loops through each zip code to fill the array
for (int i=0; i<d; i++)
{
zipCodes[i]=hi.next();
System.out.println(zipCodes[i]);
}
return zipCodes;
}
public static String[] getCities (File zips, Scanner hi, int d)
{
//creating array of cities
String[] cities=new String[d];
//fills array with city names, parallel to its zip code
for (int i=0; i<d; i++)
{
hi.next();
cities[i]=hi.next();
hi.nextLine();
}
return cities;
}下面是主要的方法:
public static void main(String[] args) throws IOException {
File zips=new File("ZipCodesCity.txt");
//Scanner to count number of lines in file
Scanner in=new Scanner(zips);
//Counting number of zip codes
int codenum=0;
while (in.hasNextLine())
{
codenum++;
}
//making a second scanner to read in the zip codes
Scanner hi= new Scanner(zips);
//initializing array of zip codes
String[]zipCodes=getZipCodes(zips, hi, codenum);
//Tokenizer
StringTokenizer wrd=new StringTokenizer(hi.nextLine(), ",");
}发布于 2015-10-02 09:04:13
您的问题的一个变通解决方案是将正则表达式与字符串分词器一起使用。您只需要在第一个逗号上拆分,因为第二个逗号是城市名称的一部分。方便的是,第一个逗号总是在数字之后,因为邮政编码总是数字,而第二个逗号永远不会在数字之后,因为没有城市名称包含任何数字。因此,您的分隔符是任何后面跟着逗号的数字表达式。您可以参考this article来查看使用正则表达式和字符串记号赋予器的示例。
编辑更简单您可以只获取由前5个字符组成的子字符串,因为每个邮政编码的长度都是5,然后字符串的其余部分是城市和州。这种方法要简单得多
https://stackoverflow.com/questions/32898919
复制相似问题