2013-05-21 6 views
1

J'ai un problème avec la recherche d'un caractère spécial « (».
j'ai eu un java.util.regex.PatternSyntaxException exception has occurred.
Il pourrait avoir quelque chose à voir avec « (» être traité comme un caractère spécial. Je ne suis pas très bon avec motif expression. quelqu'un peut-il me aider bien des recherches pour le caractère d'échappement?Comment rechercher un caractère spécial dans une chaîne java?

// I need to split the string at the "(" 

    String myString = "Room Temperature (C)"; 
    String splitList[] = myString.split ("("); // i got an exception 


    // I tried this but got compile error   
    String splitList[] = myString.split ("\("); 
+0

Ok merci beaucoup, ça marche. – tadpole

Répondre

1

la raison pour laquelle vous avez obtenu une exception pour la première fois parce que split() prend une expression régulière comme argument, et ( a une signification particulière là, comme Pour éviter cela, vous devez vous échapper t en utilisant un \, comme vous avez essayé.

Qu'est-ce que vous avez manqué, est que vous avez aussi besoin d'échapper à vos antislashs avec un \ supplémentaire en Java, ce qui signifie que vous avez besoin d'un total de deux:

String splitList[] = myString.split ("\\("); 
3

Essayez l'un de ces:

string.split("\\("); 
string.split(Pattern.quote("(")); 

Étant donné qu'une division de chaîne prend une expression régulière en tant qu'argument, vous devez correctement échapper les caractères. Voir Jon Skeet answer sur ce ici:

1

Vous devez échapper au caractère via antislashs: string.split("\\(");

1

( est l'un des personnages regex special. Pour y échapper, vous pouvez utiliser par ex.

  • split(Pattern.quote("(")),
  • split("\\Q(\\E"),
  • split("\\("),
  • split("[(]").
Questions connexes