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?
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);
public String removeFirstChar(String s){
return s.substring(1);
}
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"
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
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"
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);
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.
public String removeFirst(String input)
{
return input.substring(1);
}
vous pouvez faire comme ça:
String str="Jamaica";
str=str.substring(1, title.length());
return str;
public String removeFirstChar(String str){
return str.substring(1, title.length());
}
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
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.
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.
_ 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 (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.
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
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);
}