如果太长,我怎样才能用“…”来截断我的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中没有内置的方法,但这是一个非常简单的编写方法。 下面是步骤,尝试自己做,让我们知道你想出了什么。
-
创build一个方法,或许是一个扩展方法
public static void TruncateWithEllipsis(this string value, int maxLength)
-
检查传入的值是否大于使用
Length
属性指定的maxLength
。 如果该value
不大于maxLength
,则返回该value
。 -
如果我们没有按原样返回传入的值,那么我们知道我们需要截断。 所以我们需要使用
SubString
方法得到SubString
的string。 该方法将基于指定的开始和结束值返回一个较小的string部分。 结束位置是由maxLength
参数传入的,所以使用它。 -
返回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) + "..."; }