2009-08-25 27 views
1

我有这段代码,有没有简单的方法来限制显示的字符数量为250?c#字符串中的字符数限制

<%# 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

什么是'trimIt()'函数是什么样子? – 2009-08-25 15:18:12

回答

21

你寻找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这是正确的答案。这是唯一可以可靠工作并且不会变脆的答案。 – 2009-08-25 15:22:11

+0

+1与Andrew所说的一样。 – Tchami 2009-08-25 15:27:14

+1

不确定Substring有多复杂。不会像“if(s.Length <= 250)返回s;否则返回s.Substring(0,250);”会更好? – 2009-08-25 15:29:41

-1

这是不行的,因为子字符串的字符串不能短于250个标志:

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

但这(脏)解决方案将工作:

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

可能只是我,但如果字符串少于250个字符,这不会失败吗? – LorenVS 2009-08-25 15:19:53

+0

@LorenVS - 你是对的。如果字符串太短,这会引发异常。 – 2009-08-25 15:21:28

+0

你说得对。从来没有想过这会失败。我再次看到发布前的测试是一个好主意。 – StampedeXV 2009-08-25 15:25:02

8

你可以做一个扩展方法让字符串做你需要的,并允许你指定允许的最大长度。

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

这是我喜欢扩展方法的糖... – LorenVS 2009-08-25 15:37:03

+0

+1我可以建议* Shorten()*的替代方法名称? – grenade 2009-08-25 15:37:14

+0

是缩短或其他我相信可能是一个更好的名字。我只是想出了我的头顶第一件事:) – Kelsey 2009-08-25 15:39:30

0

我们可以使用下面的方法,

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

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; 
     } 
    }