Tim*_*imS 62 .net c# string truncate
我试图在C#中截断一些长文本,但我不希望我的字符串在一个单词中被切断.有没有人有一个我可以用来截断单词结尾的字符串的函数?
例如:
"This was a long string..."
Run Code Online (Sandbox Code Playgroud)
不:
"This was a long st..."
Run Code Online (Sandbox Code Playgroud)
Dav*_*ave 92
请尝试以下方法.这是非常简陋的.只需找到以所需长度开始的第一个空格.
public static string TruncateAtWord(this string value, int length) {
if (value == null || value.Length < length || value.IndexOf(" ", length) == -1)
return value;
return value.Substring(0, value.IndexOf(" ", length));
}
Run Code Online (Sandbox Code Playgroud)
Tim*_*imS 81
谢谢你的回答戴夫.我已经调整了一下这个函数,这就是我正在使用的...除非有更多的评论;)
public static string TruncateAtWord(this string input, int length)
{
if (input == null || input.Length < length)
return input;
int iNextSpace = input.LastIndexOf(" ", length, StringComparison.Ordinal);
return string.Format("{0}…", input.Substring(0, (iNextSpace > 0) ? iNextSpace : length).Trim());
}
Run Code Online (Sandbox Code Playgroud)
我的贡献:
public static string TruncateAtWord(string text, int maxCharacters, string trailingStringIfTextCut = "…")
{
if (text == null || (text = text.Trim()).Length <= maxCharacters)
return text;
int trailLength = trailingStringIfTextCut.StartsWith("&") ? 1
: trailingStringIfTextCut.Length;
maxCharacters = maxCharacters - trailLength >= 0 ? maxCharacters - trailLength
: 0;
int pos = text.LastIndexOf(" ", maxCharacters);
if (pos >= 0)
return text.Substring(0, pos) + trailingStringIfTextCut;
return string.Empty;
}
Run Code Online (Sandbox Code Playgroud)
这是我在我的项目中使用的,具有可选的尾随.文本永远不会超过maxCharacters +尾随文本长度.