Je tente de créer une méthode d'extension de chaîne pour rogner une chaîne sur une certaine longueur, mais sans casser un mot. Je voulais vérifier s'il y avait quelque chose intégré dans le cadre ou une méthode plus intelligente que la mienne. Voici le mien jusqu'à présent (pas entièrement testé):Création d'une fonction de rognage de chaîne intelligente en C#
public static string SmartTrim(this string s, int length)
{
StringBuilder result = new StringBuilder();
if (length >= 0)
{
if (s.IndexOf(' ') > 0)
{
string[] words = s.Split(' ');
int index = 0;
while (index < words.Length - 1 && result.Length + words[index + 1].Length <= length)
{
result.Append(words[index]);
result.Append(" ");
index++;
}
if (result.Length > 0)
{
result.Remove(result.Length - 1, 1);
}
}
else
{
result.Append(s.Substring(0, length));
}
}
else
{
throw new ArgumentOutOfRangeException("length", "Value cannot be negative.");
}
return result.ToString();
}
je ne voudrais pas Divisé. Je boucle sur la chaîne à la recherche du prochain mot break. arrête si la position de la coupure trouvée est après la longueur donnée. sinon ajoutez le mot avant le constructeur de chaîne.pour trouver le mot avant la pause trouvée, vous devrez stocker la position de la pause précédemment trouvée (ou zéro). logique? – akonsu
Vous ne pouvez pas vous soucier de votre application, mais gardez à l'esprit que les fonctions intégrées 'Trim' vérifient réellement' char.IsWhiteSpace', pas seulement 'space'. – Marc
@Marc - bonne note. Je remettais en question ma formulation en la tapant. –