Si j'ai une chaîne, par ex.Expression régulière scindée Java
setting=value
Comment puis-je supprimer le « = » et transformer en deux chaînes distinctes contenant « réglage » et « valeur », respectivement?
Merci beaucoup!
Si j'ai une chaîne, par ex.Expression régulière scindée Java
setting=value
Comment puis-je supprimer le « = » et transformer en deux chaînes distinctes contenant « réglage » et « valeur », respectivement?
Merci beaucoup!
Deux options viennent à l'esprit.
La première split()
est le String
sur =
:
String[] pieces = s.split("=", 2);
String name = pieces[0];
String value = pieces.length > 1 ? pieces[1] : null;
La seconde utilise directement regexes pour analyser le String
:
Pattern p = Pattern.compile("(.*?)=(.*)");
Matcher m = p.matcher(s);
if (m.matches()) {
String name = m.group(1);
String value = m.group(2);
}
Le second vous donne plus de puissance. Par exemple vous pouvez perdre automatiquement l'espace blanc si vous changez le modèle pour:
Pattern p = Pattern.compile("\\s*(.*?)\\s*=\\s*(.*)\\s*");
Vous n'avez pas besoin d'une expression régulière pour cela, il suffit faire:
String str = "setting=value";
String[] split = str.split("=");
// str[0] == "setting", str[1] == "value"
Vous pouvez définir un limit
si value
peut avoir un =
en trop; voir le javadoc
Cela _si en utilisant l'expression régulière, cependant. Par exemple, si vous voulez diviser sur?? ', Vous ne pouvez pas simplement' str.split ("?") '. Vous devriez l'échapper à 'str.split (" \\? ")'. – polygenelubricants
Ah oui, j'ai oublié String.split de Java prend une expression régulière; la plupart des langues se divisent sur une chaîne –