2013-06-24 19 views
0

这里我想统计数据库中的总字符数,只显示250个字符,剩下像'... '631更多单词如何显示最多250个字符和其余字符串为'.... {X}更多的字'

通过使用c#代码后面 谢谢。

+0

你有任何的代码? –

+0

您可以尝试使用'string.Substring(0,250)'来获得前250个字符,然后您可以添加一个“...”。 – Writwick

+0

来自TableName的SELECT LEFT(ColumnName,250)在查询中只显示250个字符 – skhurams

回答

1

您可能会考虑使用新的扩展方法。下面的逻辑将保证你不会在中间切开一个字了,并认为“更多的单词”部分将不被包括在内,除非该字符串实际上是切断:

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); 
+0

似乎很好。但它没有正确返回“更多的单词”。 var numWordsExcluded = words.Count() - initialText.Split('').Length; –

+1

@DebajitMukherjee我通过在'wordsToInclude'变量的初始化中加入了一个ToList来解决这个问题。问题在于'IEnumerable'在本地'totalChars'变量上使用了一个闭包,在'wordsToInclude'变量的第一次评估后这个变量被改变了。调用'ToList'评估'IEnumerable'并保留在内存中,以便其评估不会改变。 –

0

你可以尝试在查询

SELECT LEFT(ColumnName,250) + '...' + (DATALENGTH(ColumnName)-250) + ' more words' from TableName 
0

要返回正确的“更多的话:”你需要使用这个

var numWordsExcluded = words.Count() - initialText.Split(' ').Length; 
+0

请问你能来gtalk [email protected]是我的编号 –

+0

能否请你在这里分享你的电子邮件@ Debajit Mukherjee请 –

+0

是的确定@punit ..我的gmail是[email protected] –

相关问题