Замените {tag} значением или полностью удалите {any-tag} - PullRequest
1 голос
/ 27 мая 2010

Я разработал многоязычный веб-сайт, и некоторые значения в базе данных содержат тег, который будет заменен на значение языка, удален скобки тегов (в случае {}) или полностью удален.

Есть два случая:

Снять скобки:

value {mm} >> value mm

Удалить полностью:

value {mm} >> value

Также {tag} может быть любой длины и может содержать -

Кто-нибудь может мне помочь с регулярным выражением?

Ответы [ 2 ]

2 голосов
/ 27 мая 2010

Вот код, который может оказаться полезным. Для многих многих дополнительных параметров см. Regular-expressions.info .

Весь код Using System.Text.RegularExpressions;


Удалить все вхождения {mm} (и только mm):

Regex.Replace(myString, "{mm}", String.Empty, RegexOptions.None);

Заменить все вхождения {mm} (и только mm) на mm:

Regex.Replace(myString, "{mm}", "mm", RegexOptions.None);

Удалить все вхождения {any-characters}:

Regex.Replace(myString, @"{[\-a-z]*}", String.Empty, RegexOptions.IgnoreCase);

Заменить все вхождения {any-characters} на any-characters:

Regex.Replace(myString, @"{(?<tag>[\-a-z]*)}", "${tag}", RegexOptions.IgnoreCase);
0 голосов
/ 27 мая 2010

.Net уже предоставляет аналогичную функциональность, используя String.Format .

string.Format("value {0}", ""); // returns "value "
string.Format("value {0}", "some value"); // returns "value some value"

С помощью этого метода вы можете выполнять более сложные действия, например задавать форматирование чисел:

string.Format(new CultureInfo("en-US"), "value {0:N}", 10000); // returns 10,000.00
string.Format(new CultureInfo("es-ES"), "value {0:N}", 10000); // returns 10.000,00

Два недостатка этого метода:

  1. Нет чехла для снятия скобок.
  2. Не могу назвать ваши заполнители. Вы должны использовать порядковые заполнители. {0}, {1} ... {n}.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...