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

backoff

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

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

95927
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 091
Благодарностей
8 969
Баллы
113
как сделать поиск по столбцу C ?
или может регуляркой смотреть совпадение, чтоб было только 2 символа?
В простом случае, применительно к этой конкретной ситуации, можно просто искать во всех столбцах по двухбуквенному коду, по регулярке \bTR\b

95941
 
  • Спасибо
Реакции: Mikhail B. и backoff

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 781
Благодарностей
2 442
Баллы
113
Есть таблица, в ней языки стран, есть список, из которого берется язык в переменную, и надо взять строку из таблицы, по совпадению, но совпадает все подряд :-)

на скрине видно, что язык - 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(); // Возвращаем первую ячейку
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 387
Благодарностей
5 447
Баллы
113

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