创建正则表达式以清理公司名称java

时间:2019-07-16 07:10:15

标签: java regex

我想通过删除所有“ LTD”,“ INC”等来清除公司名称。

我对正则表达式并不陌生,我已经搜索了类似的问题,但是它们都不适合我,因为它们的语法不同或不适合我的问题。

我导入了一个带有世界上所有已知后缀的CSV文件,以此作为我的refex的基础。 CSV的内容如下:

...
co
commv
coop
corp
corporation
cpora
cpt
crl
cv
cvoa
cxa
da
...

代码如下:

// BS: Method which read the common company suffixes and creates a regex string

public String readCSVMapping() {
        String result = "";
        int i = 0;
        try (Scanner scanner = new Scanner(new File("data/ofac/other/company_suffix_cln.csv"));) {
            while (scanner.hasNextLine()) {
                String line = scanner.nextLine();
                try (Scanner rowScanner = new Scanner(line)) {
                    rowScanner.useDelimiter(";");
                    while (rowScanner.hasNext()) {
                        if(i==0) {
                            result = result + rowScanner.next().toUpperCase();
                            i++;
                        }
                        else {
                            result = result + "|" + rowScanner.next().toUpperCase();
                        }
                    }
                }
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

        // BS: sort the string by length of string (descending)
        String[] results = result.split("\\|");
        Arrays.sort(results, (a,b)->b.length() - a.length());
        result = String.join("|", results);

        return result;
    }

不幸的是,它也从“银行”中删除了“ ba”,我不希望这样做。我试图在结果字符串中添加边界,但这根本没有删除后缀。例如:

result = result +"|"+ "\\\b" + rowScanner.next().toUpperCase() + "\\\b";

提前谢谢!

Bas

1 个答案:

答案 0 :(得分:0)

谢谢您的答复,但实际上答案很简单...

if(i==0) {
    result = result + "\\b" + rowScanner.next().toUpperCase() + "\\b";
    i++;
}
else {
    result = result + "|" + "\\b" + rowScanner.next().toUpperCase() + "\\b";
}

现在可以使用