5
4

7 に答える 7

9

これを1行で実行できます。ループする必要はありません。String#replaceAll(regex, str)を使用するだけです。

company = company.replaceAll("PTE$*?|LTD$*?|PRIVATE$*?|LIMITED$*?","");     
于 2013-03-07T09:33:53.650 に答える
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);
于 2013-03-07T09:47:24.537 に答える
2

while文字列の末尾にあるこれらのサフィックスのみを削除する場合は、ループを導入できます。

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",""));

PTE Basit LIMITED INC他の人が説明したように、変換することを気にしない場合Basit(および最初の PTE を削除する場合) は、replaceAll機能するはずです。

于 2013-03-07T09:39:07.190 に答える
0

これを試して :

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",""));
}
于 2013-03-07T09:37:20.333 に答える
0

必要なのはtrim()、関数を再帰的に使用して呼び出すことだけです。または、末尾からサブ文字列を削除するたびに、iを0にリセットします。

于 2013-03-07T09:37:40.563 に答える