gpt4 book ai didi

java - StringTokenizer 使用

转载 作者:行者123 更新时间:2023-12-01 11:06:25 25 4
gpt4 key购买 nike

我试图使用 StringTokenizer 将逗号设置为文件中各行的分隔符,每行由邮政编码和城市组成(例如 01221,华盛顿特区),但我不希望第二个逗号是分隔符,因为它是城市名称的一部分。我有 2 个类(class),在其中读取邮政编码和城市名称,但我不确定如何正确使用标记器来将邮政编码和城市分开。我想从每个类中返回 1 个包含邮政编码和城市的数组,因此我不想将它们合并到一个类中。我也不确定是否应该将分词器放在我的主方法中。

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(), ",");
}

最佳答案

解决您的问题的一个解决方案是使用正则表达式和 stringtokenizer。您只想在第一个逗号上进行拆分,因为第二个逗号是城市名称的一部分。为方便起见,第一个逗号总是位于数字之后,因为邮政编码始终是数字,第二个逗号从不位于数字之后,因为没有城市名称包含任何数字。因此,您的分隔符是任何带有数字后跟逗号的表达式。您可以引用this article查看将正则表达式与 stringtokenizer 结合使用的示例。

编辑更简单地说,您可以只取由前 5 个字符组成的子字符串,因为每个邮政编码的长度都是 5,然后字符串的其余部分是城市和州。这种方法比较简单

关于java - StringTokenizer 使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32898919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com