回答
您可能会考虑使用新的扩展方法。下面的逻辑将保证你不会在中间切开一个字了,并认为“更多的单词”部分将不被包括在内,除非该字符串实际上是切断:
public static class Extensions
{
public static string ToCutOffString(this string text, int maxLength)
{
var totalChars = 0;
var words = text.Split(' ');
var wordsToInclude = words.Where(word => (totalChars += word.Count()) < maxLength).ToList();
var initialText = string.Join(" ", wordsToInclude);
var numWordsExcluded = words.Count() - wordsToInclude.Count();
var format = numWordsExcluded == 0
? "{0}" : "{0}... {1} more word"
+ (numWordsExcluded > 1 ? "s" : "");
return string.Format(format, initialText, numWordsExcluded);
}
}
然后你就可以使用它喜欢:
"very long string with many words".ToCutOffString(25);
似乎很好。但它没有正确返回“更多的单词”。 var numWordsExcluded = words.Count() - initialText.Split('').Length; –
@DebajitMukherjee我通过在'wordsToInclude'变量的初始化中加入了一个ToList来解决这个问题。问题在于'IEnumerable'在本地'totalChars'变量上使用了一个闭包,在'wordsToInclude'变量的第一次评估后这个变量被改变了。调用'ToList'评估'IEnumerable'并保留在内存中,以便其评估不会改变。 –
你可以尝试在查询
SELECT LEFT(ColumnName,250) + '...' + (DATALENGTH(ColumnName)-250) + ' more words' from TableName
要返回正确的“更多的话:”你需要使用这个
var numWordsExcluded = words.Count() - initialText.Split(' ').Length;
请问你能来gtalk [email protected]是我的编号 –
能否请你在这里分享你的电子邮件@ Debajit Mukherjee请 –
是的确定@punit ..我的gmail是[email protected] –
- 1. 如何从字符串显示最多200个字符
- 2. 显示一个字符串中是否有多余字符
- 3. 如何将java多个字符和字符串替换为其他字符;
- 4. 在Logcat上显示更多字符串
- 5. 如何显示字符串中多次出现的字符?
- 6. 特殊字符多余的字符显示出来之前
- 7. 如果字符多于160个字符串,则显示警告
- 8. 如何显示C字符串的最后N个字符?
- 9. 如何替换字符串的大写字母(和其余字)
- 10. Ruby:将字符串拆分为最多40个字符的子字符串
- 11. 限制为250个字符
- 12. 如何更换多个字符在一个字符串中
- 13. 从getBooleanExtra显示多个字符串
- 14. 如何将多个字符串显示为一个Toast?
- 15. PHP字母,数字,字符串其余
- 16. Java单个字符由多个字节表示的字符串
- 17. 如何获取Golang字符串的最后X个字符?
- 18. 字符串替换多个字符串
- 19. 显示只在栏中的字符串的前x个字符
- 20. 只显示最后一个字符串的字符串数组
- 21. 比较一个字符串与多个其他字符串
- 22. 如何在字符串中查找3个或更多字符?
- 23. 如何将字符串转换为具有多余字符(swift)的NSDate?
- 24. 字符数组输出多余字符
- 25. 如何正则表达式的字符串 - 长度为8,第一个字符字母和其余的数字
- 26. PREG_REPLACE如果字符串以char X结尾,则最后一个X字符将其替换为Y字符
- 27. 字符串的replaceAll多个字符
- 28. 拆分字符串和更多符号
- 29. 删除字符串X中的字符X很多次
- 30. Vim最多删除X个字符
你有任何的代码? –
您可以尝试使用'string.Substring(0,250)'来获得前250个字符,然后您可以添加一个“...”。 – Writwick
来自TableName的SELECT LEFT(ColumnName,250)在查询中只显示250个字符 – skhurams