J'ai en dessous de String.
ABC Results for draw no 2888
Je voudrais extraire 2888
d'ici. Cela signifie que j'ai besoin d'extraire des caractères après no
dans la chaîne ci-dessus.
Je suis toujours extraire le numéro après le mot no
. La chaîne ne contient aucune autre combinaison de lettres no
ailleurs. La chaîne peut contenir d'autres nombres et je n'ai pas besoin de les extraire. Il y aura toujours un espace avant le numéro et le numéro que je souhaite extraire sera toujours à la fin de la chaîne.
Comment pourrais-je y parvenir?
yourString.substring(yourString.indexOf("no") + 3 , yourString.length());
Vous pouvez essayer ceci
String example = "ABC Results for draw no 2888";
System.out.println(example.substring(example.lastIndexOf(" ") + 1));
Vous voulez toujours vous efforcer de quelque chose qui est facile à configurer et à modifier. C'est pourquoi je recommande toujours de choisir Regex Pattern correspondant à d'autres recherches.
Exemple, considérez ceci pour votre exemple:
import Java.util.regex.Matcher;
import Java.util.regex.Pattern;
public class Play {
public static void main(String args[]) {
Pattern p = Pattern.compile("^(.*) Results for draw no (\\d+)$");
Matcher m = p.matcher("ABC Results for draw no 2888");
m.find();
String groupName = m.group(1);
String drawNumber = m.group(2);
System.out.println("Group: "+groupName);
System.out.println("Draw #: "+drawNumber);
}
}
Maintenant, à partir du modèle fourni, je peux facilement identifier les parties utiles. Cela m'aide à identifier les problèmes et je peux identifier des parties supplémentaires dans le modèle qui me sont utiles (j'ai ajouté le nom du groupe).
Un autre avantage évident est que je peux facilement stocker ce modèle en externe dans un fichier de configuration.