如何从String的结尾删除匹配的单词

Bas*_*sit 5 java

我想从String的结尾删除以下单词 ‘PTE’, ‘LTD’, ‘PRIVATE’ and ‘LIMITED’

我尝试了代码,但后来我卡住了.我试过这个

String[] str = {"PTE", "LTD", "PRIVATE", "LIMITED"};

String company = "Basit LTD";
for(int i=0;i<str.length;i++) {

    if (company.endsWith(str[i])) {

        int position = company.lastIndexOf(str[i]);
        company = company.substring(0, position);        
    }
}

System.out.println(company.replaceAll("\\s",""));
Run Code Online (Sandbox Code Playgroud)

有效.但是假设公司最终是Basit LIMITED PRIVATE LTD PTE或者说Basit LIMITED PRIVATE PTE LTD是四个单词的任意组合.接着上面的代码只是删除最后一个名字,即,PTEPRIVATE等等,并且输出BasitLIMITEDPRIVATELTD.

我希望输出正好 Basit

我该怎么做?

谢谢

- - - - - - - -编辑 - -

请注意,这里的公司名称只是一个例子,它没有必要始终相同.也许我的名字就像

String company = "Masood LIMITED LTD PTE PRIVATE"
Run Code Online (Sandbox Code Playgroud)

或者最后可以有上述词语的任何名称.

谢谢

Per*_*ror 9

您可以单行执行此操作.无需循环.只需使用String#replaceAll(regex,str).

company = company.replaceAll("PTE$*?|LTD$*?|PRIVATE$*?|LIMITED$*?","");     
Run Code Online (Sandbox Code Playgroud)

  • 你应该在每个字符串的末尾添加$.此符号指定字符串的结尾. (2认同)
  • BasitLTDemar有限公司私人有限公司PTE"这将导致Basitemar从第一个字本身删除LTD. (2认同)

use*_*_CC 2

如果您将不需要的单词放入地图中,它将在结果字符串中被省略

    HashMap map = new HashMap();
    map.put("PTE", "");
    map.put("LTD", "");
    map.put("PRIVATE", "");
    map.put("LIMITED", "");



    String company = "Basit LTD PRIVATE PTE";


    String words[] = company.split(" ");

    String resultantStr = "";

    for(int k = 0; k < words.length; k++){
        if(map.get(words[k]) == null) {
            resultantStr += words[k] + " ";

        }
    }


    resultantStr = resultantStr.trim();
    System.out.println(" Trimmed String: "+  resultantStr);
Run Code Online (Sandbox Code Playgroud)