我收集了一些单词,我想从这个限量为5个字符的集合创建集合
输入:
Car
Collection
Limited
stackoverflow
输出:
car
colle
limit
stack
word.Substring(0,5)抛出异常(length)
word.Take(10)也不是个好主意......
有什么好主意吗?
答案 0 :(得分:22)
LINQ to this scenario for this scenario?您可以执行以下选择:
from w in words
select new
{
Word = (w.Length > 5) ? w.Substring(0, 5) : w
};
基本上,?:解决了这个问题。
答案 1 :(得分:8)
var words = new [] { "Car", "Collection", "Limited", "stackoverflow" };
IEnumerable<string> cropped = words.Select(word =>
word.Substring(0, Math.Min(5, word.Length)));
答案 2 :(得分:2)
你可以做的事情是
string partialText = text.Substring(0, Math.Min(text.Length, 5));
答案 3 :(得分:0)
我相信你所寻找的那种答案看起来像这样:
var x = new string[] {"car", "Collection", "Limited", "stackoverflow" };
var output = x.Select(word => String.Join("", word.Take(5).ToList()));
变量“output”包含结果:
car
Colle
Limit
stack
并且字符串“car”不会抛出异常。
但是,虽然Join和Take(5)有效,但使用起来通常要简单得多,正如另一个答案中所建议的那样,
subString = word.Substring(0,Math.Min(5,word.Length));
后一个代码更具人性化和轻量级,但在字符串上使用Linq获取前五个字符肯定有一点冷静因素,而不必检查字符串的长度。