web-dev-qa-db-fra.com

Supprimer les derniers caractères de la variable Java String

Une variable de chaîne Java dont la valeur est

String path = "http://cdn.gs.com/new/downloads/Q22010MVR_PressRelease.pdf.null"

Je souhaite supprimer les quatre derniers caractères, à savoir .null. Quelle méthode je peux utiliser pour diviser.

54
Sangram Anand

Je pense que vous voulez supprimer les cinq derniers caractères ('.', 'N', 'u', 'l', 'l'):

path = path.substring(0, path.length() - 5);

Notez que vous devez utiliser la valeur de retour - les chaînes étant immuables, substring (et les autres méthodes) ne modifient pas la chaîne existante - elles renvoient une référence à une chaîne new avec les données appropriées.

Ou pour être un peu plus en sécurité:

if (path.endsWith(".null")) {
  path = path.substring(0, path.length() - 5);
}

Cependant, j'essaierais d'aborder le problème plus haut. Mon hypothèse est que vous n'avez que le ". Null", car un autre code fait quelque chose comme ceci:

path = name + "." + extension;

extension est null. Je voudrais conditionner cela à la place, pour que vous n'obteniez jamais les mauvaises données en premier lieu.

(Comme indiqué dans un commentaire de question, vous devriez vraiment parcourir l'API String . C'est l'une des classes les plus utilisées en Java, il n'y a donc aucune excuse pour ne pas en être familier.)

125
Jon Skeet
import org.Apache.commons.lang3.StringUtils;

// path = "http://cdn.gs.com/new/downloads/Q22010MVR_PressRelease.pdf.null"
StringUtils.removeEnd(path, ".null");
// path = "http://cdn.gs.com/new/downloads/Q22010MVR_PressRelease.pdf"
29
path = path.substring(0, path.length() - 5);
7
juergen d

Je suis surpris de voir que toutes les autres réponses (au 8 septembre 2013) impliquent soit de compter le nombre de caractères dans la sous-chaîne ".null", soit de lancer une StringIndexOutOfBoundsException si la sous-chaîne n'est pas trouvée. Ou les deux :( 

Je suggère ce qui suit:

public class Main {

    public static void main(String[] args) {

        String path = "file.txt";
        String extension = ".doc";

        int position = path.lastIndexOf(extension);

        if (position!=-1)
            path = path.substring(0, position);
        else
            System.out.println("Extension: "+extension+" not found");

        System.out.println("Result: "+path);
    }

}

Si la sous-chaîne n'est pas trouvée, rien ne se passe, car il n'y a rien à couper. Vous n'obtiendrez pas la StringIndexOutOfBoundsException. De plus, vous n'avez pas à compter les caractères vous-même dans la sous-chaîne.

5
Ali

Si vous souhaitez supprimer les 5 derniers caractères, vous pouvez utiliser:

path.substring(0,path.length() - 5)

(pourrait contenir off par une erreur;)) 

Si vous souhaitez supprimer une chaîne de variable:

path.substring(0,path.lastIndexOf('yoursubstringtoremove));

(peut également contenir par une erreur;)) 

3
Konstantin Pribluda

Autrement:

if (s.size > 5) s.reverse.substring(5).reverse

BTW, c'est du code Scala. Peut-être besoin de crochets pour fonctionner en Java.

0
Jus12