Je pense que la solution de BrokenGlass est bonne, mais personnellement, je préfère créer trois méthodes distinctes permettant à l'utilisateur de rogner uniquement le début, la fin ou les deux.
Si ces gênes allaient être beaucoup utilisées, je les créerais dans une classe d'aide et/ou comme méthodes d'extension; http://msdn.microsoft.com/en-gb/library/vstudio/bb383977.aspx
public string TrimStart(string inputText, string value, StringComparison comparisonType = StringComparison.CurrentCultureIgnoreCase)
{
if (!string.IsNullOrEmpty(value))
{
while (!string.IsNullOrEmpty(inputText) && inputText.StartsWith(value, comparisonType))
{
inputText = inputText.Substring(value.Length - 1);
}
}
return inputText;
}
public string TrimEnd(string inputText, string value, StringComparison comparisonType = StringComparison.CurrentCultureIgnoreCase)
{
if (!string.IsNullOrEmpty(value))
{
while (!string.IsNullOrEmpty(inputText) && inputText.EndsWith(value, comparisonType))
{
inputText = inputText.Substring(0, (inputText.Length - value.Length));
}
}
return inputText;
}
public string Trim(string inputText, string value, StringComparison comparisonType = StringComparison.CurrentCultureIgnoreCase)
{
return TrimStart(TrimEnd(inputText, value, comparisonType), value, comparisonType);
}
Avec ces méthodes, nous pouvons modifier le code pour une boucle à travers le tableau contenant les chaînes à rogner.
var content = "08:00 AM";
var removeList = new [] { "a", "am", "p", "pm" };
for (var i = 0; i < removeList.length; i++)
{
content = TrimEnd(content, removeList[i]);
}
REMARQUE: Ce code pourrait être optimisé davantage, mais fonctionnera comme il le devrait avec une bonne vitesse.
Quand devrait-il être retiré? Vous essayez évidemment de résoudre un dilemme temporel. Peut-être qu'il existe une meilleure façon de résoudre votre problème entièrement –
Lorsque la zone de texte perd le focus, l'événement 'OnLeave'. – Entity
pourquoi voulez-vous faire cela? Utiliser la liste générique – Shahin