web-dev-qa-db-fra.com

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

En Java, j'ai une chaîne:

Jamaica

Je voudrais supprimer le premier caractère de la chaîne et ensuite retourner amaica

Comment je ferais ça?

195
Calibre2010

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

"Jamaica".substring(1);
303
marcog
public String removeFirstChar(String s){
   return s.substring(1);
}
59
Ahmed Kotb

Utilisez substring() et donnez le nombre de caractères que vous souhaitez couper de l’avant.

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

Réponse: "amaica"

53

En Java, supprimez le caractère principal uniquement s'il s'agit d'un certain caractère

Utilisez l'opérateur Java ternaire pour vérifier rapidement si votre personnage est présent avant de le supprimer. Cela supprime le caractère principal uniquement s'il existe. Si une chaîne vide est transmise, 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);

Impressions:

blankstring
foobar
moobar

Java, supprime toutes les occurrences 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, supprime 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"
46
Eric Leschinski

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

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

La chose clé à comprendre dans Java est que les chaînes sont immuables - vous ne pouvez pas les changer. Il n’a donc 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 souhaités. Les autres messages de cette question vous proposent différentes manières de le faire, mais il est important de comprendre que ceux-ci ne modifient en aucune manière la chaîne d'origine. Toutes les références que vous avez à l'ancienne chaîne continueront de faire référence à l'ancienne chaîne (à moins que vous ne les changiez pour faire référence à une chaîne différente) et ne seront pas affectées par la nouvelle chaîne créée.

Cela a un certain nombre d'implications pour la performance. Chaque fois que vous "modifiez" une chaîne, vous créez en réalité une nouvelle chaîne avec tout le surcoût impliqué (allocation de mémoire et garbage collection). Donc, si vous voulez 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 plutôt un StringBuilder ou un StringBuffer.

11
Chris Dodd
public String removeFirst(String input)
{
    return input.substring(1);
}
9
Reese Moore

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());
}
9
eli am

substring () Cette méthode retourne une nouvelle chaîne contenant une sous-séquence des caractères actuellement contenus dans cette séquence.

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

Il a deux formes. Le premier est

  1. String substring(int FirstIndex)

Ici, FirstIndex spécifie l'index auquel la sous-chaîne commencera. Ce formulaire renvoie une copie de la sous-chaîne qui commence par FirstIndex et se termine à la fin de la chaîne invoquée.

  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'à l'index de fin sans l'inclure.

Exemple

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

Je suis tombé sur une situation où je devais supprimer non seulement le premier caractère (s'il s'agissait d'un #), mais le premier ensemble de caractères.

String myString = ###Hello World pourrait ê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());
}

Dans le cas de OP, remplacez while par if et cela fonctionnera également.

4
Mathieu Brouwers

Une autre solution, vous pouvez résoudre votre problème en utilisant replaceAll avec une expression rationnelle ^.{1} ( démonstration de l'expression rationnelle ), par exemple:

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

Ma version de la suppression des caractères principaux, un ou plusieurs. Par exemple, String str1 = "01234" lors de la suppression du "0" initial, 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 à regex (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);
}
1