2015-08-17 5 views
1

Я читаю заголовок из файла с полями времени, например Time (UTC +1). Затем мне нужно сравнить это со списком сохраненных заголовков, чтобы работать, если файл действителен, однако мои сохраненные заголовки используются для записи и поэтому позволяют гибко настраивать время, записывая так Time (UTC {0}).Сравните строку с параметром

Я хотел бы знать, какой лучший способ справиться с этим в максимально возможной гибкой формулировке. Единственный способ, которым я могу это представить, - это получить позицию {и только сравнить ее с этим. Это прекрасно в этом случае, но что, если у меня есть несколько слов после параметра, которые важнее закрывающей скобки.

EDIT: Я хотел бы дать некоторый контекст проблемы, чтобы я мог лучше объяснить, насколько гибко мне это нужно. Я думаю, что, возможно, я не подчеркивал тот факт, что я не хотел, чтобы он работал с полем времени.

Я пытаюсь написать систему, которая очень гибкая. Я сохраняю список допустимых заголовков, а затем использую их, чтобы узнать, какое значение следует читать/записывать в файл csv. Он очень гибкий и легко ремонтируемый. Я хочу быть в состоянии сохранить его аккуратным и гибким. Я хочу иметь возможность написать функцию, которая принимает строку, которая имеет в ней один из параметров, а затем сравнивает ее со значением, которое имеет заполненные параметры (как пример с заголовком времени). В будущем у меня может быть поле для температуры в определенном месте, поэтому мой сохраненный заголовок будет Temperature in {0}({1}), который при чтении будет Temperature in Britain(c) или Temperature in America(f).

+1

Вы изучали регулярные выражения? – Brann

ответ

1

Вы можете использовать регулярные выражения, как это:

string pattern = @"Time \(UTC \{(\+)*\d\}\)"; 
Regex rgx = new Regex(pattern); 

Regex имеет метод Match вы можете использовать, чтобы проверить, соответствует ли какая-либо строка шаблона вы предоставили.

+0

Это регулярное выражение не будет распознавать 'Time (UTC +1)' и 'Time (UTC {0})' как одно и то же. Я действительно думал об использовании Regex, но я считаю, что для того, чтобы сделать работу, которая будет работать против любой строки, которая имеет какие-либо параметры или даже несколько параметров, будет слишком сложной и интенсивной. – Keithin8a

+0

легко исправить регулярное выражение, чтобы он соответствовал +1 поверх 0 (я просто сделал это). Вообще говоря, регулярное выражение - это решение вашей проблемы! – Brann

+0

Думаю, мне нужно сделать это сложнее и сделать этот код более громоздким, как вы сказали. Сможете ли вы помочь сделать его гибким? У меня есть два поля на данный момент: 'Time (UTC {0})' и 'Time Uploaded (UTC {0})' Мне нужен один оператор, который будет работать для обоих, где я мог бы иметь метод, который будет принимать в версию с параметрами, заполненными версией с ними как {0}, и сможете найти совпадение. – Keithin8a