Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从字符串末尾删除匹配的单词_Java - Fatal编程技术网

Java 如何从字符串末尾删除匹配的单词

Java 如何从字符串末尾删除匹配的单词,java,Java,我想删除字符串末尾的以下单词“PTE”、“LTD”、“PRIVATE”和“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 = compa

我想删除字符串末尾的以下单词
“PTE”、“LTD”、“PRIVATE”和“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",""));
或者任何可以在末尾有上述文字的名称


谢谢

您可以在一行中完成此操作。不需要循环。就用吧

试试这个:

public static void main(String a[]) {   
    String[] str = {"PTE", "LTD", "PRIVATE", "LIMITED"};
    String company = "Basit LIMITED PRIVATE LTD PTE";

    for(int i=0;i<str.length;i++) {
        company = company.replaceAll(str[i], "");
    }

    System.out.println(company.replaceAll("\\s",""));
}
publicstaticvoidmain(字符串a[]){
字符串[]str={“私人”、“有限”、“私人”、“有限”};
String company=“Basit LIMITED PRIVATE LTD私人有限公司”;

对于(int i=0;i您只需使用
trim()
递归调用函数,或者每次从末尾删除子字符串时,将
i
重置为0。

如果您只想删除字符串末尾的这些后缀,则可以在
的同时引入
循环:

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

String company = "Basit LTD";

while (foundSuffix) {
    foundSuffix = false;

    for(int i=0;i<str.length;i++) {

        if (company.endsWith(str[i])) {
            foundSuffix = true;
            int position = company.lastIndexOf(str[i]);
            company = company.substring(0, position);        
        }
    }
}
System.out.println(company.replaceAll("\\s",""));
String[]str={“私人”、“有限”、“私人”、“有限”};
布尔foundSuffix=true;
字符串公司=“Basit有限公司”;
while(foundSuffix){
foundSuffix=false;

对于(int i=0;i如果将不需要的单词放在映射中,它将被写入结果字符串中

    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);
HashMap map=newhashmap();
地图放置(“PTE”和“);
地图出售(“有限公司”);
地图放置(“私人”和“);
地图出售(“有限”);
String company=“Basit有限公司私人私人有限公司”;
字符串[]=company.split(“”);
字符串resultststr=“”;
for(int k=0;k
首先使用replace方法,我们得到
word=my name is…..khan
(注意:
)表示空格)。现在我们应该删除这些空格,因为我们正在创建一个新字符串,只需添加所有标记


输出:
我的名字是khan

我试图为我的一个项目做完全相同的事情。几天前我写了这段代码。现在我正试图找到一个更好的方法来做,这就是我发现这个问题的原因。但在看到其他答案后,我决定分享我的代码版本

Collection<String> stopWordSet = Arrays.asList("PTE", "LTD", "PRIVATE", "LIMITED");    

String company = "Basit LTD"; //Or Anything
String[] tokens = company.split("[\@\]\\\_\^\[\"\#\ \!\&\'\`\$\%\*\+\(\)\.\/\,\-\;\~\:\}\|\{\?\>\=\<]+");

Stack<String> tokenStack = new Stack<>();
tokenStack.addAll(Arrays.asList(tokens));
while (!tokenStack.isEmpty()) {
     String token = tokenStack.peek();
     if (stopWordSet.contains(token))
         tokenStack.pop();
     else
         break;
}

String formattedCompanyName = StringUtils.join(tokenStack.toArray());
Collection stopWordSet=Arrays.asList(“私人”、“有限”、“私人”、“有限”);
String company=“Basit LTD”//或任何东西

String[]tokens=company.split(“[\@\]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\它会将第一个单词改为COMTIONY。您应该在每个字符串的末尾添加$。这个符号指定字符串的结尾。@PREMGERROR我尝试过这个
string company=“Basit LIMITED PRIVATE PTE LTD”;
-->
company=company.replaceAll(“PTE$| LTD$|PRIVATE$|LIMITED$”);
-->
System.out.println(company)
但它正在打印
Basit LIMITED PRIVATE PTE
而不仅仅是
Basit
…?BasitDemar LIMITED PRIVATE LTD“这将导致Basitemar因此从第一个单词本身中删除LTD。不,名称只是一个示例,它可以是任何组合,这里我硬编码字符串,例如,可能是我有公司名称
Masood PRIVATE PTE LTD
。。。
    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);
public class StringMatchRemove {

    public static void main(String[] args) {

        String str="my name is noorus khan";
        String search="noorus";
        String newString="";
        String word=str.replace(search," ");
        StringTokenizer st = new StringTokenizer(word," ");
        while(st.hasMoreTokens())
        {
          newString = newString + st.nextToken() + " "; 
        }
        System.out.println(newString);

    }
Collection<String> stopWordSet = Arrays.asList("PTE", "LTD", "PRIVATE", "LIMITED");    

String company = "Basit LTD"; //Or Anything
String[] tokens = company.split("[\@\]\\\_\^\[\"\#\ \!\&\'\`\$\%\*\+\(\)\.\/\,\-\;\~\:\}\|\{\?\>\=\<]+");

Stack<String> tokenStack = new Stack<>();
tokenStack.addAll(Arrays.asList(tokens));
while (!tokenStack.isEmpty()) {
     String token = tokenStack.peek();
     if (stopWordSet.contains(token))
         tokenStack.pop();
     else
         break;
}

String formattedCompanyName = StringUtils.join(tokenStack.toArray());