java - supprimer les points-virgules d'une chaîne si la chaîne se termine par
J'ai une condition dans laquelle j'ai besoin d'enlever le point-virgule s'il est présent à la fin de la Chaîne(seulement à la fin). J'ai essayé le code suivant. Mais ce n'est pas encore remplacé. Quelqu'un peut s'il vous plaît dites ce que je dois modifier dans le code suivant dans le numéro de la ligne
(J'ai renvoyé le code d'ici Comment puis-je supprimer des caractères spécifiques d'une Chaîne de caractères en Java?)
public static void main(String[] args) {
String text = "wherabouts;";
System.out.println("SSS "+text.substring(text.length()-1));
if(text.substring(text.length()-1) == ";"){
text.replaceAll(";", "");
}
System.out.println("TEXT : "+text);
}
source d'informationauteur user1732653
Vous devez vous connecter pour publier un commentaire.
Puisque les Chaînes de caractères en Java sont immuables, donc
replaceALl()
méthode ne fait pas de la place de remplacement, c'est plutôt elle renvoie une nouvelle chaîne modifiée. Donc, vous avez besoin de stocker la valeur de retour dans une autre chaîne. Aussi, pour correspondre à la semi-colon à la fin, vous devez utiliser$
quantificateur après;
$
indique la fin de la chaîne puisque vous voulez remplacer la dernièresemi-colon
..Si vous n'utilisez pas
$
il remplace tous les;
de vos chaînes..Ou, pour votre travail, vous pouvez simplement utiliser cette option si vous souhaitez supprimer le dernier
;
:Mise à JOUR: Et, s'il y a plus de points-virgules à la fin:
String modifiedText = text.replaceAll(";$", "");
OU
text = text.replaceAll(";$", "");
OU
NOTE:
Les chaînes sont immuables. Cela signifie que vous ne pouvez pas les modifier.
Par conséquent, vous devez ré-attribuer texte ou définir une nouvelle variable.
Voici un peu de lecture supplémentaire pour vous
http://javarevisited.blogspot.com/2010/10/why-string-is-immutable-in-java.html
Vous ne devez pas oublier que la Chaîne est immuable. Donc, chaque fois que vous souhaitez le modifier, vous devez affecter le résultat à une variable.
Une solution possible à ce dont vous avez besoin:
Chaînes de caractères en java sont immuables, donc
replaceAll
renvoie une nouvelle chaîne de caractères.Ne
Vous utilisez la version incorrecte de
String.substring
Vous pouvez utiliser:Chaîne est immuable afin de de la nouvelle Chaîne sera créé après la remplacer.
ou
Utilisation
.equals()
au lieu de==
si vous allez utilisersubstring()
plutôt quecharAt()
:Aussi, de réaffecter votre texte variable:
Il y a plusieurs problèmes dans le code que vous avez fournis.
Utilisation est égal à pour comparer des objets.
Si vous souhaitez remplacer uniquement le dernier caractère, vous n'avez pas besoin de replaceAll.
Donc, ne soit
ou
Solution pour un seul point-virgule
Ralentissement de la solution, peut-être plus d'un point-virgule
En outre, voici quelques autres problèmes avec le code que vous avez posté, pour référence.
Vous ne pouvez pas comparer des chaînes de caractères avec
==
. Au lieu de cela, vous avez à les comparer avec.equals()
. Ce serait correctement écrit comme ceci...ength()-1).equals(";")
.Cela remplace tous les points-virgules qu'il trouve. Cela signifie que si votre chaîne est
some;thing;
il de la transformer ensomething
mais vous voulez seulement de supprimer le dernier point-virgule, comme ceci:some;thing
. Pour ce faire correctement, vous devez regarder pour la fin de la chaîne, à l'aide de la$
de caractères comme ceci: