12
votes

Supprimer les caractères avant une virgule dans une chaîne

Je me demandais quelle serait la meilleure façon de faire de la suppression de caractères avant une virgule dans une chaîne, ainsi que de retirer la virgule elle-même, laissant simplement les caractères après la virgule de la chaîne, si la chaîne est représentée comme " ville, pays '.

Merci d'avance


2 commentaires

Avez-vous essayé quelque chose?


Les expressions régulières sont votre ami


5 Réponses :


34
votes

Donc, vous voulez

ville, pays

devenir

pays

Un moyen facile de faire est-ce: xxx

C'est "gourmand" cependant, ce qui signifie qu'il va changer < / p>

ville, état, pays

dans

pays

Dans votre cas, vous voudrez peut-être qu'il devienne

état, pays

Je ne pouvais pas dire à votre question.

Si vous voulez "non gourmand" correspondant, utilisez xxx

Ceci va produire

état, pays


6 commentaires

Qu'est-ce que . *, ? Merci!


D'un côté non s'il le souhaitait> City, État, pays à devenir> État, changements de pays remplaxl à remplafirst system.out.println ("Ville, état , pays ".replacefirst (". *, "," ")); mais oui la question n'est pas claire


@Ruchirbaronia La période est n'importe quel caractère, l'astérisque indique la répétition (ce qui signifie un nombre quelconque de périodes / caractères) et la virgule est une virgule régulière de sorte que la carte générique. * Ne le précède que.


@Codemonkey: Votre relevé est fausse, car l'astérisque en combinaison avec un point rend la regex gourmand. Pour le faire fonctionner, vous pouvez utiliser: "ville, état, pays" .replacefirst ("\\ w *,", "") .


@Jacobvanlingen en effet j'avais tort. Merci d'avoir appelé ça


GreandeaNswer monsieur merci merci



0
votes

Vous pouvez implémenter une sorte de sous-chaîne qui trouve tous les index des caractères avant votre virgule, puis tout ce que vous auriez à faire est de les supprimer.


0 commentaires

3
votes

Si ce que vous souhaitez extraire des données tout en laissant la chaîne d'origine intacte, vous devez utiliser la fonction SPLIT (String Regex).

String foo = new String("city,country");
String[] data = foo.split(",");


1 commentaires

Les chaînes sont immuables, la chaîne d'origine sera donc toujours laissée intacte.



1
votes

Ceci peut être fait avec une combinaison de sous-chaîne code> et indexof code>, à l'aide de indexof code> pour déterminer la position de la (première) virgule, et Substring CODE> Pour extraire une partie de la chaîne par rapport à cette position.

String s = "city,country";
String s2 = s.substring(s.indexOf(",") + 1);


0 commentaires

3
votes

Vérifiez que ce xxx

Je l'ai trouvé plus rapide que .replaceall (". *,", "")


2 commentaires

Quel est '.*,'? Merci


C'est regex ". *" Pour un certain nombre de caractères et "," des virgules utilisées comme délimiteur.