J'ai des chaînes comme:Quelle est la meilleure façon de manipuler la chaîne suivante?
"{0}_something_{1}-{2}-something"
et je dois convertir ces chaînes pour
"%s_something_%s-%s-something"
quelle est la meilleure façon de le faire?
J'ai des chaînes comme:Quelle est la meilleure façon de manipuler la chaîne suivante?
"{0}_something_{1}-{2}-something"
et je dois convertir ces chaînes pour
"%s_something_%s-%s-something"
quelle est la meilleure façon de le faire?
J'utiliserais une expression rationnelle.
String data = "{0}something{1}-{2}-something";
System.out.println(data.replaceAll("\\{.*?\\}", "%s_"));
Sortie:
%s_something%s_-%s_-something
Edit: Une expression rationnelle qui remplace seulement s'il n'y a que des chiffres entre {
et }
System.out.println(data.replaceAll("\\{\\d+\\}", "%s_"));
@dan: Attention, cette solution laissera "-c" en place.En outre, elle ne correspondra pas seulement aux chiffres entre les accolades, mais tout Jetez un oeil à ma réponse pour une solution testée complète – Shef
@Shef L'exemple que dan posté a toujours '-' dans la sortie, c'est pourquoi je n'essaie pas de le supprimer. qui ne correspond que s'il y a des chiffres entre '{}' – Kaj
Oui, cela ne correspondra qu'aux chiffres Ok, s'il veut toujours le '-', c'est ce qu'il veut.;) Bon travail – Shef
myString.replaceAll("\\{\\d\\}", "%s")
Si vous essayez à creat e une chaîne de format Java, alors vous devriez probablement conserver l'ordre de ces remplacements, sinon des chaînes comme foo {2} bar {1} baz {0}
vont poser des problèmes:
myString.replaceAll("\\{(\\d)\\}", "%$1$$s");
Cette regexp ne remplace pas ce que il veut remplacer – Kaj
Huh? Il dit qu'il veut cette sortie «% s_quelque chose_% s-% s-quelque chose» mon expression rationnelle produit cette sortie. – Kaj
merci. mais vous avez besoin de "\\" avant le "{". sinon vous obtenez PatternSyntaxException: répétition illégale. – AAaa
Pensez à utiliser MessageFormat. - http://download.oracle.com/javase/6/docs/api/java/text/MessageFormat.html
String result = MessageFormat.format("{0}something{1}-{2}-something", "%s_", "_%s", "%s");
String str = "{0}something{1}-{2}-something";
String clean = str.replaceAll("(\\{\\d+\\}-?)", "%s_");
System.out.println(clean); // outputs: %s_something%s_%s_something
Ce qui est ici la logique? Quand ajouter un trait de soulignement? – Fortega
aucune logique dans les traits de soulignement. seulement en remplaçant tous les {0}, {1} avec% s. J'ai oublié le string.replce est avec regex. J'ai ma réponse ici. merci – AAaa
puis remplacez votre exemple par "Comment devrais-je remplacer toutes les instances de {0} ... {1} ..." et etc. par "% s" – mre