【问题标题】:Token Replacement and Identification代币替换和识别
【发布时间】:2011-12-15 23:13:32
【问题描述】:

我需要完成以下并且不确定最好的方法。

以下面的字符串为例。

%%%% 开始 %%%%

sit amet ipsum sagittis luctus eu id diam。 [%RC:3%] 莫比感染 iaculis accumsan。 Morbi laoreet consectetur nisl, luctus tempor felis ultrices commodo。 Praesent dui augue, interdum non rutrum vel, 前庭坐在amet lorem。 Nam sit amet erat elit, et porta mi。 前庭非 urna magna。菜豆 暂时的。 Duis metus quam, 发酵菌 sed ultricies id, tincidunt id 伊普苏姆。 [%RC:1%]

%%%% 结束 %%%%

我需要做的是获取该字符串并首先找到“令牌”[%RC:(int)%] 的所有出现,获取该令牌中包含的 id(将用于查询数据),然后用新字符串替换整个令牌。

我该怎么做?任何建议和指导都会很棒。

【问题讨论】:

    标签: c# regex string


    【解决方案1】:

    假设您有一个可用于查找替换字符串的字典,请尝试使用采用 MatchEvaluatorRegex.Replace 的重载:

    string result = Regex.Replace(
        text,
        @"\[%RC:(\d+)%\]",
        match => dict[int.Parse(match.Groups[1].Value)]);
    

    在线查看:ideone

    【讨论】:

    • 这会简单地替换 [%RC: %] 之间的内容还是替换整个字符串?是否有可能获得所有找到的令牌的数组,以便我可以循环遍历它们??
    • 刚刚看到它在网上工作..我认为你实际上为我创造了一个更优雅的解决方案来解决我最初的问题。我现在就试试这个。。谢谢
    • 找到包含 MatchEvaluator 的重载为我节省了大量时间(和 LOC)——感谢 Mark!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多