希望有人有个好主意.我有这样的字符串:
abcdefg
abcde
abc
Run Code Online (Sandbox Code Playgroud)
我需要的是,如果超过指定的长度,他们将被剔除以显示如下:
abc ..
abc ..
abc
Run Code Online (Sandbox Code Playgroud)
我可以使用任何简单的C#代码吗?
Bry*_*tts 126
以下是扩展方法中包含的逻辑:
public static string Truncate(this string value, int maxChars)
{
return value.Length <= maxChars ? value : value.Substring(0, maxChars) + "...";
}
Run Code Online (Sandbox Code Playgroud)
用法:
var s = "abcdefg";
Console.WriteLine(s.Truncate(3));
Run Code Online (Sandbox Code Playgroud)
JSt*_*ens 10
所有非常好的答案,但要稍微清理一下,如果您的字符串是句子,请不要在单词中间断开您的字符串。
private string TruncateForDisplay(this string value, int length)
{
if (string.IsNullOrEmpty(value)) return string.Empty;
var returnValue = value;
if (value.Length > length)
{
var tmp = value.Substring(0, length) ;
if (tmp.LastIndexOf(' ') > 0)
returnValue = tmp.Substring(0, tmp.LastIndexOf(' ') ) + " ...";
}
return returnValue;
}
Run Code Online (Sandbox Code Playgroud)
public string TruncString(string myStr, int THRESHOLD)
{
if (myStr.Length > THRESHOLD)
return myStr.Substring(0, THRESHOLD) + "...";
return myStr;
}
Run Code Online (Sandbox Code Playgroud)
忽略命名约定,以防他实际需要THRESHOLD变量或者它总是相同的大小.
另外
string res = (myStr.Length > THRESHOLD) ? myStr.Substring(0, THRESHOLD) + ".." : myStr;
Run Code Online (Sandbox Code Playgroud)
这是一个说明椭圆长度的版本:
public static string Truncate(this string value, int maxChars)
{
const string ellipses = "...";
return value.Length <= maxChars ? value : value.Substring(0, maxChars - ellipses.Length) + ellipses;
}
Run Code Online (Sandbox Code Playgroud)