2010-10-05 132 views
1

寻找一个简单的查询来使用Linq按x个字符截断文本。使用linq截断文本

+5

请给出更多细节。你一直都不清楚你正在寻找什么样的截断,或者它与LINQ有什么关系。 – 2010-10-05 12:58:53

回答

2

你可以用一个非常简单的SelectSubstring组合截断字符串一定长度:

var words = new List<string>(); 

// fill the list of words 

var truncated = words.Select(w => w.Substring(0, 15)); 
+0

我决定让它变得复杂,并将单词转换为char数组,使用select many,然后使用聚合。你的是一条直线。我会接受! – FiveTools 2010-10-05 13:20:54

+0

对不起。转换为字符数组,然后我用take和select,然后聚合结果。 – FiveTools 2010-10-05 13:30:17

1
string raw = raw.ToCharArray().Take(maxLength).Select(x 
=> x.ToString()).Aggregate((current,next) 
=> current + next); 

这是在复杂...

+2

你写了*而不是使用'string'的'Substring'实例方法?创意,当然,但...圣洁的流血roadkill,蝙蝠侠。 – 2010-10-05 14:03:09

+0

是的 - 我刚刚提到过... – FiveTools 2010-10-05 14:26:18

6

你的问题还不清楚。基于对Justin's answer您的评论听起来更简单的方式来实现你描述情况如下:

string input = "The quick brown fox jumped over the lazy dog"; 
string result = new String(input.Take(15).ToArray()); 
Console.WriteLine(result); 

注意,没有必要调用ToCharArray()因为字符串实现IEnumerable<char>。 VS2008中的智能感知不会显示,但扩展方法仍然有效。同样,您可以使用字符串构造函数并将其传递给一组字符,而不是使用Aggregate

+0

扩展方法也是一个想法!谢谢。 – FiveTools 2010-10-05 14:27:14