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.
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;
où 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.)
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"
path = path.substring(0, path.length() - 5);
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.
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;))
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.