2015-11-13 4 views
-2

У меня есть список строк в C#. Он содержит следующие подстроки где-то в середине строк в списке. Список не упорядочен. Я хочу заказать этот список на основе следующих записей:Как заказать список строк на основе списка ссылок строковых значений

 
Email 
FirstName 
LastName 
Country 
Province 
Phone 
Fax 

в этом заказе.

Например, если исходный список имел следующие данные:

 
The field Province required 5 letters 
Wrong Email 
Phone is required 
FirstName should contain min of 5 letters 
The field Fax requires 10 digits 
Enter a valid LastName 
Fax is required 
The field Phone requires 10 digits 

Он должен быть отсортирован следующим образом:

 
Wrong Email 
FirstName should contain min of 5 letters 
Enter a valid LastName 
The field Province required 5 letters 
Phone is required 
The field Phone requires 10 digits 
Fax is required 
The field Fax requires 10 digits 

Благодарности

+0

Если речь идет о правильном оформлении вывода валидации на основе последовательности полей формы, у меня есть ощущение погружения, что вы идете в неправильном направлении. – flq

+0

Я не думаю, что вы хотите/нуждаетесь в регулярном выражении для этого - я бы, вероятно, использовал список [строк] и просто переупорядочил его программно. Кроме того, в качестве побочного примечания (и я не проголосовал за вас) - мое первое имя содержит 4 буквы, это меня расстроит. – Nefariis

ответ

1

Это может быть что-то вроде этого.

var order = new List<string>() 
{ 
    "Email", 
    "FirstName", 
    "LastName", 
    "Country", 
    "Province", 
    "Phone", 
    "Fax", 
}; 

var lines = new List<string>() 
{ 
    "The field Province required 5 letters", 
    "Wrong Email", 
    "Phone is required", 
    "FirstName should contain min of 5 letters", 
    "The field Fax requires 10 digits", 
    "Enter a valid LastName", 
    "Fax is required", 
    "The field Phone requires 10 digits", 
}; 

Func<string, int> calc = s => Regex.Matches(s, @"\w+").Cast<Match>() 
           .Select(m => m.Value) 
           .Max(x => order.IndexOf(x)); 

var result = lines.OrderBy(l => calc(l)).ToList(); 

Вам может понадобиться, чтобы исправить этот код, если строка не содержит каких-либо ключевых слов из набора ...

BTW: Ваш вопрос не понятен для случая, как

Wrong Email or Fax number 
Смежные вопросы