我想通过删除所有“ 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
答案 0 :(得分:0)
谢谢您的答复,但实际上答案很简单...
if(i==0) {
result = result + "\\b" + rowScanner.next().toUpperCase() + "\\b";
i++;
}
else {
result = result + "|" + "\\b" + rowScanner.next().toUpperCase() + "\\b";
}
现在可以使用