Java - suppression du premier caractère d'une chaîne


215

En Java, j'ai une chaîne:

Jamaica

Je voudrais supprimer le premier caractère de la chaîne puis revenir amaica

Comment pourrais-je faire ça?

Réponses:


343

Utilisez la substring()fonction avec un argument de 1pour obtenir la sous-chaîne de la position 1 ( après le premier caractère) à la fin de la chaîne (en laissant le deuxième argument par défaut sur toute la longueur de la chaîne).

"Jamaica".substring(1);

21
Il est important de noter que cela ne supprime pas réellement le caractère de la chaîne - cela vous donne une nouvelle chaîne qui contient tous les caractères de l'ancienne chaîne sauf la première. Il n'y a aucun moyen de modifier réellement une chaîne.
Chris Dodd

Le lien ne semble plus valide. Essayez plutôt le lien suivant: substring (int)
Christian Hoffmann

1
Oui, si vous souhaitez supprimer les n premiers caractères d'une variable de chaîne, procédez comme suit: variable = variable.substring (n);
Mitulát báti

68
public String removeFirstChar(String s){
   return s.substring(1);
}

12
Si vous allez définir une nouvelle fonction, choisissez au moins un nom approprié comme removeFirst().
moinudin

55

Utilisez substring()et indiquez le nombre de caractères que vous souhaitez découper de face.

String value = "Jamaica";
value = value.substring(1);

Réponse: "amaica"


47

En Java, supprimez le caractère de tête uniquement s'il s'agit d'un certain caractère

Utilisez l'opérateur ternaire Java pour vérifier rapidement si votre personnage est là avant de le supprimer. Cela supprime le caractère de tête uniquement s'il existe, s'il a passé une chaîne vide, retourne une chaîne vide.

String header = "";
header = header.startsWith("#") ? header.substring(1) : header;
System.out.println(header);

header = "foobar";
header = header.startsWith("#") ? header.substring(1) : header;
System.out.println(header);

header = "#moobar";
header = header.startsWith("#") ? header.substring(1) : header;
System.out.println(header);

Tirages:

blankstring
foobar
moobar

Java, supprimez toutes les instances d'un caractère n'importe où dans une chaîne:

String a = "Cool";
a = a.replace("o","");
//variable 'a' contains the string "Cl"

Java, supprimez la première instance d'un caractère n'importe où dans une chaîne:

String b = "Cool";
b = b.replaceFirst("o","");
//variable 'b' contains the string "Col"

4
SEC:header = header.substring(header.startsWith("#") ? 1 : 0);
Aaron Blenkush

3
Ou avec regex:header = header.replaceFirst("^#","");
Aaron Blenkush

18

Vous pouvez utiliser la méthode de sous - chaîne de la Stringclasse qui ne prend que l'index de début et renvoie la sous-chaîne qui commence par le caractère à l'index spécifié et s'étendant jusqu'à la fin de la chaîne.

String str = "Jamaica";
str = str.substring(1);

11
public String removeFirst(String input)
{
    return input.substring(1);
}

11

La chose clé à comprendre en Java est que les chaînes sont immuables - vous ne pouvez pas les changer. Donc, cela n'a aucun sens de parler de «supprimer un caractère d'une chaîne». Au lieu de cela, vous créez une nouvelle chaîne avec uniquement les caractères que vous souhaitez. Les autres articles de cette question vous donnent différentes façons de le faire, mais il est important de comprendre que ceux-ci ne changent en rien la chaîne d'origine. Toutes les références que vous avez à l'ancienne chaîne continueront de se référer à l'ancienne chaîne (sauf si vous les modifiez pour faire référence à une autre chaîne) et ne seront pas affectées par la nouvelle chaîne créée.

Cela a un certain nombre d'implications pour les performances. Chaque fois que vous «modifiez» une chaîne, vous créez en fait une nouvelle chaîne avec toutes les charges implicites (allocation de mémoire et ramasse-miettes). Donc, si vous souhaitez apporter une série de modifications à une chaîne et ne vous soucier que du résultat final (les chaînes intermédiaires seront mortes dès que vous les `` modifierez ''), il peut être plus judicieux d'utiliser un StringBuilder ou StringBuffer à la place.


9

vous pouvez faire comme ça:

String str="Jamaica";
str=str.substring(1, title.length());
return str;

ou en général:

public String removeFirstChar(String str){
   return str.substring(1, title.length());
}

8

La méthode substring () renvoie une nouvelle chaîne qui contient une sous- séquence de caractères actuellement contenus dans cette séquence.

La sous-chaîne commence à la valeur spécifiée startet s'étend au caractère àindex end - 1 .

Il a deux formes. Le premier est

  1. String substring(int FirstIndex)

Ici, FirstIndex spécifie l'index à partir duquel la sous-chaîne commencera. Ce formulaire renvoie une copie de la sous-chaîne qui commence à FirstIndex et s'exécute à la fin de la chaîne d'appel.

  1. String substring(int FirstIndex, int endIndex)

Ici, FirstIndex spécifie l'index de début et endIndex spécifie le point d'arrêt. La chaîne renvoyée contient tous les caractères de l'index de début jusqu'à, mais sans inclure, l'index de fin.

Exemple

    String str="Amiyo";
   // prints substring from index 3
   System.out.println("substring is = " + str.substring(3)); // Output "yo'

4

Je suis tombé sur une situation où je devais supprimer non seulement le premier caractère (si c'était un #, mais le premier jeu de caractères.

String myString = ###Hello Worldpourrait être le point de départ, mais je voudrais seulement garder le Hello World. cela pourrait être fait comme suit.

while (myString.charAt(0) == '#') { // Remove all the # chars in front of the real string
    myString = myString.substring(1, myString.length());
}

Pour le boîtier OP, remplacez whilepar ifet cela fonctionne également.


1
Il y aura un problème si myString == "#" car la chaîne sera hors limites à un moment donné. Pour éviter cela, vous pouvez faire (! MyString.isEmpty () && myString.charAt (0))
Christian

2

Une autre solution, vous pouvez résoudre votre problème en utilisant replaceAlldes regex ^.{1}( démo regex ) par exemple:

String str = "Jamaica";
int nbr = 1;
str = str.replaceAll("^.{" + nbr + "}", "");//Output = amaica

1

Ma version de suppression des caractères principaux, un ou plusieurs. Par exemple, String str1 = "01234", lorsque vous supprimez "0", le résultat sera "1234". Pour une chaîne str2 = "000123", le résultat sera à nouveau "123". Et pour String str3 = "000", le résultat sera une chaîne vide: "". Une telle fonctionnalité est souvent utile lors de la conversion de chaînes numériques en nombres.L'avantage de cette solution par rapport à l'expression régulière (replaceAll (...)) est que celle-ci est beaucoup plus rapide. Ceci est important lors du traitement d'un grand nombre de chaînes.

 public static String removeLeadingChar(String str, char ch) {
    int idx = 0;
    while ((idx < str.length()) && (str.charAt(idx) == ch))
        idx++;
    return str.substring(idx);
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.