Comment obtenir le contenu après la dernière virgule d'une chaîne en utilisant une expression régulière?
Exemple:
abcd,fg;ijkl, cas
La sortie devrait être cas
Remarque: Il y a un espace entre la dernière virgule et le caractère 'c'
qui doit également être supprimé. En outre, le modèle ne contient qu'un espace après la dernière virgule.
Peut-être quelque chose comme:
String s = "abcd,fg;ijkl, cas";
String result = s.substring(s.lastIndexOf(',') + 1).trim();
C’est-à-dire que je prends la sous-chaîne apparaissant après la dernière virgule et supprime ensuite les espaces blancs environnants ...
Vous devriez toujours toujours chercher la réponse à ce type de question dans Apache Commons ... et les questions de base devraient être incluses dans chaque construction. Le plus approprié (ne pas utiliser de regex) est le suivant:
StringUtils.substringAfterLast(String str, String separator)
Mais si vous voulez vraiment utiliser une expression régulière pour une raison quelconque, vous pouvez utiliser quelques méthodes, par exemple:.
String removeAll(String text, String regex)
ou
String removeFirst(String text, String regex)
De manière amusante, vous pouvez obtenir ce que vous voulez en faisant cela (en vous fiant à des quantificateurs gourmands):
StringUtils.removeFirst( myString, ".*," );
StringUtils fait partie d'Apache commons-lang3.
En dehors de toute autre chose, il est inutile de réinventer la roue. Mais je peux penser à au moins 2 autres avantages:
PS: rien ne vous empêche de consulter le code source pour vérifier si la méthode fonctionne réellement. Ils sont généralement très faciles à comprendre.
Vous pouvez essayer ceci:
public static void main(String[] args) {
String s = " abcd,fg;ijkl, cas";
String[] words = s.split(",");
System.out.println(words[words.length-1].trim());
}
Un seul espace:
String[] aux = theInputString.split(",\\s");
string result = aux[aux.length-1];
0 à n espaces:
String[] aux = theInputString.split(",\\s*");
string result = aux[aux.length-1];
Qu'en est-il de ce qui suit:
String a = "abcd,fg;ijkl, cas";
String[] result = a.split(",[ ]*");
String expectedResult = result[result.length - 1]);
et un de plus :)
String s = "abcd,fg;ijkl, cas";
String result = s.replaceAll(".*, ", "");