Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 代币替换和识别_C#_Regex_String - Fatal编程技术网

C# 代币替换和识别

C# 代币替换和识别,c#,regex,string,C#,Regex,String,我需要完成以下内容,但不确定最佳方法 以下面的字符串为例 %%%%开始%%%% 坐在同侧矢状体上,直径。[%RC:3%]Morbi suscipit 艾库利斯·阿库姆桑。莫尔比·拉奥里特·康塞特图尔·尼塞尔,卢克图斯·临时猫 ultrices commodo。8月份的酒后驾驶,非常规驾驶, 前庭位于阿梅特·洛雷姆。这是我的梦想。 前庭无骨节大。黄花相思 tincidunt。杜伊斯·梅特斯·奎姆,酵母菌发酵液id,tincidunt id 乱数假文。[%RC:1%] %%%%结束%%%% 我需要能

我需要完成以下内容,但不确定最佳方法

以下面的字符串为例

%%%%开始%%%%

坐在同侧矢状体上,直径。[%RC:3%]Morbi suscipit 艾库利斯·阿库姆桑。莫尔比·拉奥里特·康塞特图尔·尼塞尔,卢克图斯·临时猫 ultrices commodo。8月份的酒后驾驶,非常规驾驶, 前庭位于阿梅特·洛雷姆。这是我的梦想。 前庭无骨节大。黄花相思 tincidunt。杜伊斯·梅特斯·奎姆,酵母菌发酵液id,tincidunt id 乱数假文。[%RC:1%]

%%%%结束%%%%

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


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

假设您有一本字典可以用来查找替换字符串,请尝试使用带
匹配计算器的重载:

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

联机查看它的工作情况:

这只是替换[%RC:%]之间的内容,还是替换整个字符串?有没有可能得到一个包含所有找到的令牌的数组,这样我就可以在它们之间循环?我刚刚看到它在网上工作。我想你实际上为我的初始问题创建了一个更优雅的解决方案。我现在就来试试。谢谢找到包含MatchEvaluator的重载为我节省了一吨时间(和LOC)--谢谢Mark!