Подскажите логику (регулярка возможно)

  • Автор темы Автор темы backoff
  • Дата начала Дата начала

backoff

Client
Регистрация
20.04.2015
Сообщения
6 357
Реакции
6 655
Баллы
113
Есть таблица, в ней языки стран, есть список, из которого берется язык в переменную, и надо взять строку из таблицы, по совпадению, но совпадает все подряд :)

на скрине видно, что язык - tr (турция), а берет австралию, потому что есть совпадение
как сделать поиск по столбцу C ?
или может регуляркой смотреть совпадение, чтоб было только 2 символа?

95927
 
как сделать поиск по столбцу C ?
или может регуляркой смотреть совпадение, чтоб было только 2 символа?
В простом случае, применительно к этой конкретной ситуации, можно просто искать во всех столбцах по двухбуквенному коду, по регулярке \bTR\b

95941
 
  • Спасибо
Реакции: Mikhail B. и backoff
Есть таблица, в ней языки стран, есть список, из которого берется язык в переменную, и надо взять строку из таблицы, по совпадению, но совпадает все подряд :-)

на скрине видно, что язык - tr (турция), а берет австралию, потому что есть совпадение
как сделать поиск по столбцу C ?
или может регуляркой смотреть совпадение, чтоб было только 2 символа?

Посмотреть вложение 95927
Я бы решал примерно так:
C#:
Развернуть Свернуть Копировать
var tb = project.Tables["tb"];
string lang = "TR";
tb.AddRow(new[]{"Турция","Turkey", "TR", "TUR"});
tb.AddRow(new[]{"Австрия","Austriya", "AU", "AUS"});
tb.AddRow(new[]{"Демо","demo", "demotr", "demotr"});

string[] array = Enumerable.Range(0, tb.RowCount)
    .Select(x=>tb.GetRow(x).ToArray())
    .Where( x => x[2] == lang) // Условие что ищем в ячейке 2 (0==A; 1==B; 2==C...)
    .DefaultIfEmpty(new string[5]) // Если ничего не найдено - пустые значения
    .First();

//return string.Join("|", array); // Возвращаем всю строку
return array.First(); // Возвращаем первую ячейку
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)