如果太长,我怎样才能用“…”来截断我的string?

希望有人有一个好主意。 我有这样的string:

abcdefg abcde abc 

我需要的是,如果不止一个指定的长度,他们就会被这样的performance出来:

 abc .. abc .. abc 

有什么简单的C#代码,我可以使用这个?

这是用扩展方法包装的逻辑:

 public static string Truncate(this string value, int maxChars) { return value.Length <= maxChars ? value : value.Substring(0, maxChars) + "..."; } 

用法:

 var s = "abcdefg"; Console.WriteLine(s.Truncate(3)); 
 public string TruncString(string myStr, int THRESHOLD) { if (myStr.Length > THRESHOLD) return myStr.Substring(0, THRESHOLD) + "..."; return myStr; } 

忽略命名约定,以防万一他实际需要THRESHOLDvariables或者它的大小始终相同。

另外

 string res = (myStr.Length > THRESHOLD) ? myStr.Substring(0, THRESHOLD) + ".." : myStr; 

在.NET Framework中没有内置的方法,但这是一个非常简单的编写方法。 下面是步骤,尝试自己做,让我们知道你想出了什么。

  1. 创build一个方法,或许是一个扩展方法 public static void TruncateWithEllipsis(this string value, int maxLength)

  2. 检查传入的值是否大于使用Length属性指定的maxLength 。 如果该value不大于maxLength ,则返回该value

  3. 如果我们没有按原样返回传入的值,那么我们知道我们需要截断。 所以我们需要使用SubString方法得到SubString的string。 该方法将基于指定的开始和结束值返回一个较小的string部分。 结束位置是由maxLength参数传入的,所以使用它。

  4. 返回string的子部分加上省略号。

稍后的一个很好的练习就是更新方法,并在完整的单词之后才能中断。 您也可以创build一个重载指定如何显示string已被截断。 例如,如果您的应用程序设置为通过单击显示更多细节,则该方法可以返回“(click for more)”而不是“…”。

也许为此目的实施一种方法会更好:

 string shorten(sting yourStr) { //Suppose you have a string yourStr, toView and a constant value string toView; const int maxView = 3; if (yourStr.Length > maxView) toView = yourStr.Substring(0, maxView) + " ..."; // all you have is to use Substring(int, int) .net method else toView = yourStr; return toView; } 
 string s = "abcdefg"; if (s.length > 3) { s = s.substring(0,3); } 

您可以使用Substring函数。

代码后面:

 string shorten(sting s) { //string s = abcdefg; int tooLongInt = 3; if (s.Length > tooLongInt) return s.Substring(0, tooLongInt) + ".."; return s; } 

标记:

 <td><%= shorten(YOUR_STRING_HERE) %></td> 

当然,这是一些示例代码:

 string str = "abcdefg"; if (str.Length > X){ str = str.Substring(0, X) + "..."; }