将{tag}替换为值或完全删除{any-tag}

时间:2010-05-27 16:02:22

标签: c# .net asp.net regex

我设计了一个多语言网站,数据库中的某些值有一个标签,将替换为其语言值,删除标签括号(如果是{})或完全删除。

有两种情况:

删除括号:

value {mm} >> value mm

完全删除:

value {mm} >> value

{tag}也可以是任意长度,可以包含 -

有人可以用正则表达式帮我吗?

2 个答案:

答案 0 :(得分:2)

以下是一些您可能会觉得有用的代码。对于许多许多更多选项,请参阅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);

答案 1 :(得分:0)

.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}。