Ceci est la suite de Comment obtenir le caractère souhaité à partir des chaînes de taille variable? mais comprend des scénarios supplémentaires à partir desquels, les noms de personne doivent être extraits

 pot-1_Sam  [Sam is the word to be extracted]
 pot_444_Jack [Jack is the word to be extracted]
 pot_US-1_Sam  [Sam is the word to be extracted]
 pot_RUS_444_Jack[Jack is the word to be extracted]
 pot_UK_3_Nick_Samuel[Nick_Samuel is the word to be extracted]
 pot_8_James_Baldwin[James_Baldwin is the word to be extracted]
 pot_8_Jack_Furleng_Derik[Jack_Furleng_Derik is the word to be extracted]

Ci-dessus se trouvent les exemples de mots dont les noms de personne doivent être extraits. Une chose à noter est que le nom de la personne commencera toujours après un "Number" et un "Underscore". Comment réaliser ce qui précède en utilisant Java?

2
Dinesh Ravi 30 déc. 2015 à 06:25

5 réponses

Meilleure réponse
String[] strings = {
        "pot-1_Sam",
        "pot_444_Jack",
        "pot_US-1_Sam",
        "pot_RUS_444_Jack",
        "pot_UK_3_Nick_Samuel",
        "pot_8_James_Baldwin",
        "pot_8_Jack_Furleng_Derik"
};

Pattern pattern = Pattern.compile("\\d_(\\w+)$");
for (String s : strings ){
    Matcher matcher = pattern.matcher(s);
    if (matcher.find()) {
        System.out.println(matcher.group(1));
    }
}
2
John E. 30 déc. 2015 à 03:42

Vous pouvez essayer d'utiliser Reflection pour obtenir le nom réel de la variable comme indiqué ici Vous pouvez encore expliquer cela avec Regex, comme mentionné également

0
Community 23 mai 2017 à 12:23

Voici l'expression régulière: \d_(.*$)

\ d représente un chiffre

_ signifie trait de soulignement

() signifie groupe

. * $ signifie "tout jusqu'à la fin de la ligne"

1
endmymissouri 30 déc. 2015 à 03:57

Utilisez l'expression régulière suivante:

^.*\d+_(.*)$

... et extraire la valeur du 1er groupe.

2
Jason 30 déc. 2015 à 03:34
    String str= "pot_8_Jack_Furleng_Derik";
     // name starts after number and _
    Pattern p = Pattern.compile("\\d+_");
    Matcher m = p.matcher(str);

    int index = -1;
    // find the index of name
    if(m.find())
    index =  m.start()+2;

    str=  str.substring(index);
    System.out.print(str);
1
Ramanlfc 30 déc. 2015 à 03:38