Comment tronquer un .NET string?

Je tiens à tronquer une chaîne telle que sa longueur n'est pas supérieure à une valeur donnée. Je suis en train d'écrire à une table de base de données et vous voulez vous assurer que les valeurs que j'écris répondre à la contrainte de la colonne du type de données.

Par exemple, ce serait bien si je pouvais écrire ce qui suit:

string NormalizeLength(string value, int maxLength)
{
    return value.Substring(0, maxLength);
}

Malheureusement, cela soulève une exception parce que maxLength dépasse les frontières de la chaîne value. Bien sûr, je pourrais écrire une fonction comme les suivantes, mais j'espérais que quelque chose comme cela existe déjà.

string NormalizeLength(string value, int maxLength)
{
    return value.Length <= maxLength ? value : value.Substring(0, maxLength);
} 

Où est l'insaisissable API permettant d'effectuer cette tâche? Est-il un?

  • Pour l'enregistrement, les chaînes sont immuables vous ne pouvez pas les tronquer vous ne pouvez retourner une copie tronquée d'entre eux. Pinailleurs, je sais.
  • Weldon: C'est probablement la raison pour laquelle la fonction de membre n'existe pas, il ne faut pas suivre la sémantique du type de données. Sur une note de côté, StringBuilder vous permet de tronquer par shorterning la longueur, mais vous avez encore besoin pour effectuer le contrôle de la longueur afin d'éviter l'élargissement de la chaîne.
  • Quelle que soit l'option que vous choisissez, assurez-vous d'ajouter une case pour une chaîne nulle avant l'appel à la sous-Chaîne ou de l'accès à la propriété Length.
  • Si c'était le cas, alors il n'y aurait pas des fonctions comme Garniture ou le Remplacer, qui font face à des problèmes sémantiques
  • Plus pinailleurs que Microsoft eux-mêmes constamment sont, comme il arrive - qu'ils sont heureux de document, par exemple, .Trim() d'une manière qui fait de prêter son de mutation de la chaîne: "Enlève toute attaque et de fuite des blancs de l'espace, les personnages de la la Chaîne actuelle de l'objet."
InformationsquelleAutor Steve Guidi | 2010-05-05