web-dev-qa-db-fra.com

Obtention d'une sous-chaîne à partir d'une chaîne après un mot particulier

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?

12
Bishan
yourString.substring(yourString.indexOf("no") + 3 , yourString.length());
19
Juned Ahsan

Vous pouvez essayer ceci

String example = "ABC Results for draw no 2888";
System.out.println(example.substring(example.lastIndexOf(" ") + 1));
8
Rahul Tripathi

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.

3
YoYo