2011-08-03 4 views
1

Je veux vérifier si une chaîne contient # ou non. Ensuite, s'il contient #, je veux trouver le contenu après #.Comment trouver si un caractère spécial est présent dans une chaîne en Java

Par exemple,

  • test#1 - Cela devrait me revenir 1.
  • test*1 - Cela ne devrait rien retourner.
  • test#123Test - Cela doit renvoyer 123Test.

Faites-moi savoir. Merci d'avance.

+0

Veuillez préciser ce que vous entendez par "ne devrait rien retourner" - si vous deviez encapsuler ceci dans une méthode, vous devriez retourner * quelque chose * - voulez-vous une chaîne vide? , ou null, par exemple? Ou voulez-vous qu'il lance une exception? Vous avez une balise 'regex' mais y a-t-il une raison pour que vous utilisiez des expressions régulières? –

Répondre

2
// Compile a regular expression: A hash followed by any number of characters 
Pattern p = Pattern.compile("#(.*)"); 

// Match input data 
Matcher m = p.matcher("test#1"); 

// Check if there is a match 
if (m.find()) { 

    // Get the first matching group (in parentheses) 
    System.out.println(m.group(1)); 
} 
4

J'utilise des opérations de chaîne simples plutôt qu'une expression régulière:

int index = text.indexOf('#'); 
return index == -1 ? "" : text.substring(index + 1); 

(je suppose « ne devrait pas retourner quoi que ce soit » signifie « retour chaîne vide » ici - vous pouvez changer pour retourner null si vous voulez.)

Questions connexes