当前位置: 首页 > 知识库问答 >
问题:

Java的一个程序,通过在xls文件中使用逗号从地址字符串中解析USA状态

申屠飞
2023-03-14

我有一个带有“address.xls”的excel文件,它只包含一个列“a”,行中的值为美国地址。

A
_________________________________________
NO FIXED ADDRESS1, TALLAHASSEE, FL 32301
NO FIXED ADDRESS2, TALLAHASSEE, FL 32303
NO FIXED ADDRESS, SCOTTSDALE, AZ 85258
NO FIXED ADDRESS, AR

邮编:46240-7670,印第安纳波利斯Keystone Xing 8900

我想提取的状态代码只作为一个输出字符串,而不重复重复。

["FL","AZ","AR","IN"]

共有1个答案

满才
2023-03-14
  1. 创建maven项目
  2. 在pom.xml中添加以下依赖项
</dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.17</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.17</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml-schemas</artifactId>
        <version>3.17</version>
    </dependency>
    <dependency>
        <groupId>org.apache.xmlbeans</groupId>
        <artifactId>xmlbeans</artifactId>
        <version>2.6.0</version>
    </dependency>
</dependencies>

导入org.apache.poi.hssf.usermodel.hssfsheet;导入org.apache.poi.hssf.usermodel.hssfworkbook;导入org.apache.poi.ss.usermodel.cell;导入org.apache.poi.ss.usermodel.row;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;

/**
 * @author
 * Waqas Ahmed
 */
public class StateParser
{
    public static void main(String args[]) throws IOException
    {
        FileInputStream fis=new FileInputStream(new File("C:\\files\\address.xls"));
        HSSFWorkbook wb=new HSSFWorkbook(fis);
        HSSFSheet sheet=wb.getSheetAt(0);
        int index = 1;
        Set<String> statesSet = new HashSet<>();
        for(Row row: sheet) {
            for(Cell cell: row) {
                String[] arr = cell.getStringCellValue().split(",");
                String state = "";
                if(arr.length <= 2){
                    state = arr[1].substring(0,3);
                }else{
                    state = arr[2].substring(0,3);
                }
                System.out.print("Row# " + index + " =  " + cell.getStringCellValue() + " --------------->> state: " + state);
                statesSet.add("\""+state.trim()+"\"");
                state = "";
                index++;
            }
            System.out.println();
        }
        System.out.println("-------------------------------------------");
        System.out.println(statesSet.toString().trim());
    }


}

在位置“C:\files\address.xls”处添加“address.xls”文件或更改Java文件中的目录路径。

运行程序

输出将打印在控制台中

[“CO”、“NY”、“MS”、“DE”、“HI”、“WV”、“NJ”、“NH”、“TN”、“OH”、“MD”、“SC”、“VA”、“Al”、“WA”、“NV”、“FL”、“In”、“TX”、“IL”、“OR”、“MN”、“Ca”、“MI”、“Ga”、“Az”、“Me”、“Ri”、“NC”、“La”、“MA”、“Wi”、“PA”、“CT”、“Ar”]

 类似资料:
  • 问题内容: 我有以下字符串: 我怎么只能选择?第三个逗号之前的字符串长度可能会有所不同,并且内可能会有逗号。 我想要尽可能简洁的代码,即最好是1行代码,没有循环。但是,请随时发布您想到的任何解决方案。 问题答案: 我只是想出了一些可行的方法:

  • 问题内容: 我正在使用循环从数据库中获取值,我的结果是: 我想要这样: 我想在循环的最后一个值后删除逗号。 问题答案: 使用功能: 第二个参数指示要删除的字符。

  • 问题内容: 我有一个看起来像这样的字符串: 我要返回的是在每个第三个逗号后被拆分的,因此结果如下所示: 我发现了类似的功能,但它们不会以逗号分隔n个。 问题答案: 您可以尝试将方法与正则表达式一起使用 演示版 输出: 说明 表示一个数字,与[0-9]相同,例如或 表示一个或多个数字,例如或 表示一个或多个后跟逗号的数字,例如或 会接受三个数字,并且它们之间用逗号隔开 表示最后一个匹配项,或者如果没

  • 问题内容: 我已经在堆栈溢出中给出的答案的帮助下更正了代码。我想循环通过逗号分隔的Id字符串,但无法这样做。下面给出的过程仅更新第一条记录,而不更新其他记录。需要进行哪些更正,才能循环通过逗号分隔的字符串。这是我的SP的代码 该代码如该帖子的答案中所提供。 我尝试使用find_in_set()函数,但仅当我从头开始传递id时才起作用,而如果我随机传递id则不起作用。这是我的表格脚本 int(11)

  • 我的代码在命令中没有传递任何逗号,运行得非常好。我不确定如何更改我的代码来处理命令中的逗号。 这就是我现在拥有的: 当我跑的时候

  • 问题内容: 我从数据库中得到了String,它有多个逗号()。我想删除 最后一个逗号, 但实际上找不到一种简单的方法。 我有的: 我想要的是: 问题答案: 要删除紧随字符串结尾的部分,您可以执行以下操作: 相对于/ solution,它需要对此类情况进行特殊处理,这可以优雅地处理空列表(空字符串)。 示例代码: 注意: 由于存在有关零件的一些注释和建议的编辑:表达式应与要删除的尾部零件匹配。 如果