подстрока с linq? - PullRequest
       34

подстрока с linq?

11 голосов
/ 08 марта 2010

У меня есть коллекция слов, и я хочу создать коллекцию из этой коллекции, ограниченную 5 символами

Введите:

Car
Collection
Limited
stackoverflow

Выход:

car
colle
limit
stack

word.Substring (0,5) генерирует исключение (длина)

word.Take (10) тоже не очень хорошая идея ...

Есть хорошие идеи ??

Ответы [ 4 ]

22 голосов
/ 08 марта 2010

LINQ к объектам для этого сценария? Вы можете сделать выбор как в этом:

from w in words
select new
{
  Word = (w.Length > 5) ? w.Substring(0, 5) : w
};

По существу,?: Поможет вам решить эту проблему.

8 голосов
/ 08 марта 2010
var words = new [] { "Car", "Collection", "Limited", "stackoverflow" };
IEnumerable<string> cropped = words.Select(word => 
                                    word.Substring(0, Math.Min(5, word.Length)));
2 голосов
/ 18 октября 2011

То, что вы можете сделать, это

string partialText = text.Substring(0, Math.Min(text.Length, 5));
0 голосов
/ 28 июня 2013

Я думаю, что ответ, который вы искали, выглядел бы так:

var x = new string[] {"car", "Collection", "Limited", "stackoverflow" };
var output = x.Select(word => String.Join("", word.Take(5).ToList()));

Переменная «output» содержит результат:

car 
Colle 
Limit
stack 

и строка "машина" не выдает исключение.

Но в то время как Join и Take (5) работают, как правило, гораздо проще в использовании, как было предложено в другом ответе,

subString = word.Substring(0,Math.Min(5,word.Length));

Последний код более удобен для чтения и легок, хотя при использовании Linq для строки, принимающей первые пять символов, определенно есть небольшой фактор крутости, без необходимости проверять длину строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...