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?
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:
Utilisez la substring()
fonction avec un argument de 1
pour 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);
public String removeFirstChar(String s){
return s.substring(1);
}
removeFirst()
.
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"
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
String a = "Cool";
a = a.replace("o","");
//variable 'a' contains the string "Cl"
String b = "Cool";
b = b.replaceFirst("o","");
//variable 'b' contains the string "Col"
header = header.substring(header.startsWith("#") ? 1 : 0);
header = header.replaceFirst("^#","");
public String removeFirst(String input)
{
return input.substring(1);
}
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.
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 start
et s'étend au caractère àindex end - 1
.
Il a deux formes. Le premier est
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.
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.
String str="Amiyo";
// prints substring from index 3
System.out.println("substring is = " + str.substring(3)); // Output "yo'
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 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());
}
Pour le boîtier OP, remplacez while
par if
et cela fonctionne également.
Une autre solution, vous pouvez résoudre votre problème en utilisant replaceAll
des regex ^.{1}
( démo regex ) par exemple:
String str = "Jamaica";
int nbr = 1;
str = str.replaceAll("^.{" + nbr + "}", "");//Output = amaica
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);
}