2009-08-25 8 views
1

J'ai ce code, existe-t-il un moyen facile de limiter le nombre de caractères affichés à 250?Limite Nombre de caractères dans C# Chaîne

<%# trimIt(DataBinder.Eval(Container.DataItem, "WebSalesText").ToString())%> 

public string trimIt(string s) 
{ 
    if (s.Length > 0 && s.IndexOf(".") > 0) 
    { 
     return (s.Substring(0, s.IndexOf(".")) + " ..."); 
    } 
    else 
    { 
     return s; 
    } 
} 
+0

Qu'est-ce que la fonction 'Trimit()' ressembler? –

Répondre

21

Êtes-vous Vous cherchez une implémentation de trimIt?

public static string trimIt(string s) 
{ 
    if(s == null) 
     return string.Empty; 

    int count = Math.Min(s.Length, 250); 
    return s.Substring(0, count); 
} 
+3

+1 _This_ est la bonne réponse. C'est la seule réponse qui fonctionnera de manière fiable et ne sera pas fragile. –

+0

+1 Identique à ce qu'Andrew a dit. – Tchami

+1

Vous ne savez pas à quel point Substring est intelligent pour réaliser des copies. N'aurait-il pas quelque chose comme "if (s.Length <= 250) retourner s; sinon retourner à la sous-chaîne (0, 250);" être meilleur? –

-1

Cela ne fonctionne pas, comme SubString échouera pour une chaîne plus courte de 250 signes .:

<%# trimIt(DataBinder.Eval(Container.DataItem, "WebSalesText").ToString().SubString(0,250))%> 

mais cette solution (sale) travaillerait:

<%# trimIt(DataBinder.Eval(Container.DataItem, "WebSalesText").ToString(). 
    SubString(0,Math.min(250, 
    DataBinder.Eval(Container.DataItem, "WebSalesText").ToString().Length)) 
%> 
+0

Peut-être juste moi, mais cela ne échouera-t-il pas si la chaîne contient moins de 250 caractères? – LorenVS

+0

@LorenVS - vous avez raison. Cela lèvera une exception si la chaîne est trop courte. –

+0

Vous avez raison. Je n'ai jamais pensé que cela échouerait. Encore une fois, je vois que tester avant de poster est une bonne idée. – StampedeXV

8

Vous pouvez créer une méthode d'extension pour que la chaîne réponde à vos besoins et vous permet de spécifier la longueur maximale autorisée.

public static string TrimToMaxSize(this string input, int max) 
{ 
    return ((input != null) && (input.Length > max)) ? 
     input.Substring(0, max) : input; 
} 
+0

C'est le genre de sucre que j'aime les méthodes d'extension pour ... – LorenVS

+0

+1 Puis-je suggérer un autre nom de méthode de * Shorten() *? – grenade

+0

Oui Raccourcissez ou quelque chose d'autre je suis sûr que pourrait être un meilleur nom. Je suis juste venu avec la première chose du haut de ma tête :) – Kelsey

0

Nous pouvons utiliser les méthodes ci-dessous,

public static string RTrim(this string s, int Length) 
    { 
     if (s == null) 
      return string.Empty; 
     return s.Substring(0, s.Length - Length); 
    } 

ET

public static string LTrim(this string s, int Length) 
    { 
     if (s == null) 
      return string.Empty; 
     if (s.Length >= Length) 
     { 
      return s.Substring(0, Length); 
     } 
     else 
     { 
      return s; 
     } 
    } 
Questions connexes