Je ne pense pas qu'il existe une fonction intégrée à couper en fonction d'une chaîne transmise. Voici un petit exemple de comment faire cela. Ce n'est probablement pas la solution la plus efficace, mais elle est probablement assez rapide pour la plupart des situations, évalue et s'adapte à vos besoins. Je recommande de tester les performances et d'optimiser au besoin tout extrait de code qui sera utilisé régulièrement. Ci-dessous, j'ai inclus quelques informations de synchronisation à titre d'exemple.
public String trim(String stringToTrim, String stringToRemove)
{
String answer = stringToTrim;
while(answer.startsWith(stringToRemove))
{
answer = answer.substring(stringToRemove.length());
}
while(answer.endsWith(stringToRemove))
{
answer = answer.substring(0, answer.length() - stringToRemove.length());
}
return answer;
}
Cette réponse suppose que les caractères à découper sont une chaîne. Par exemple, passer dans "abc" va couper "abc" mais pas "bbc" ou "cba", etc.
Quelques temps de performance pour exécuter chacun des 10 millions de fois suivants.
" mile ".trim();
s'exécute en 248 ms inclus comme implémentation de référence pour les comparaisons de performances.
trim("smiles", "s");
s'exécute en 547 ms - environ 2 fois plus longtemps que la méthode String.trim()
de Java.
"smiles".replaceAll("s$|^s","");
fonctionne en 12306 ms - environ 48 fois plus long que la méthode String.trim()
de Java.
Et en utilisant un modèle regex Pattern pattern = Pattern.compile("s$|^s");
pattern.matcher("smiles").replaceAll("");
des pistes en 7,804 ms compilé - environ 31 fois plus long que la méthode de java String.trim()
.
Que devrait retourner '\\\\ joe \\ jill \\\\\'? 'joe \\ jill' ?? – OscarRyz
@Oscar oui. Comme la garniture en .net –
Je ne pense pas que cette opération s'appelle couper ... – Esko