代码之家  ›  专栏  ›  技术社区  ›  HasanG Joe Dabones

用值替换标记或完全删除任何标记

  •  1
  • HasanG Joe Dabones  · 技术社区  · 14 年前

    我设计了一个多语言网站,数据库中的一些值有一个标记,它将被替换为它的语言值,删除标记括号(以防)或完全删除。

    有两种情况:

    拆下支架:

    value {mm} >> value mm
    

    完全移除:

    value {mm} >> value
    

    另外标记可以是任何长度,可以包含-

    有人能帮我学瑞格舞吗?

    2 回复  |  直到 14 年前
        1
  •  2
  •   dlras2    14 年前

    下面是一些您可能会发现有用的代码。对于许多 许多的 更多选项,请参见 Regular-expressions.info .

    所有代码 Using System.Text.RegularExpressions;


    删除所有出现的 {mm} (和) 只有 mm ):

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

    替换所有出现的 {mm } (和) 只有 毫米 毫米 :

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

    删除所有出现的 {any-characters} :

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

    替换所有出现的 任何字符 具有 any-characters :

    Regex.Replace(myString, @"{(?<tag>[\-a-z]*)}", "${tag}", RegexOptions.IgnoreCase);
    
        2
  •  0
  •   Greg    14 年前

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