Предположим, я хочу спросить у пользователя, в каком формате они хотят, чтобы определенный выход был включен, и выход будет включать поля заполнения. Таким образом, они обеспечивают что-то вроде этой строки:Лучший способ предоставить пользователю escape-строку
"Output text including some field {FieldName1Value} and another {FieldName2Value} and so on..."
Все, что связанное с помощью {} должно быть именем столбца в таблице где-то они будут заменены на сохраненное значение с кодом, которую я пишу. Кажется простым, я мог бы просто сделать строку. Замените на любой экземпляр, соответствующий совпадению "{" + FieldName + "}". Но, что, если я также хочу дать пользователю возможность использовать escape, чтобы они могли использовать скобки, как любая другая строка. Я думал, что они предоставляют «{{" или "}}", чтобы избежать этой скобки - приятно и легко для них. Таким образом, они могли бы обеспечить что-то вроде:
"Output text including some field {FieldName1Value} and another {FieldName2Value} but not this {{FieldName2Value}}"
Но теперь, «{{FieldName2Value}}» должен рассматриваться как любой другой строки и игнорировали путем Заменить. Кроме того, если они решили поставить что-то вроде «{{{FieldName2Value}}}» с тройными скобками, это будет интерпретироваться кодом как значение поля, заключенное в скобки и т. Д.
Здесь я застреваю. Я пытаюсь с RegEx и придумал это:
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
string format = (string)values[0];
ObservableCollection<CalloutFieldAliasMap> oc = (ObservableCollection<CalloutFieldAliasMap>)values[1];
foreach (CalloutFieldMap map in oc)
format = Regex.Replace(format, @"(?<!{){" + map.FieldName + "(?<!})}", " " + map.FieldAlias + " ", RegexOptions.IgnoreCase);
return format;
}
Это работает в ситуации с двойными скобками {{}}, но НЕ, если есть три, т.е. {{{}}}. Тройные скобки обрабатываются как строка, когда их следует рассматривать как {FieldValue}.
Спасибо за любую помощь.
NICE! Вы являетесь мастером регулярных выражений. Работать понравилось очарование. Даже если вы используете что-то вроде {{{{FieldName}}}}, он корректно возвращает {{FieldName}}. Спасибо за помощь! – Ernie