C# 子串交替替换
我想知道是否有任何方法可以替换字符串中的子字符串,但可以在字符串之间交替替换它们。也就是说,匹配字符串的所有出现处,C# 子串交替替换,c#,string,substring,markdown,C#,String,Substring,Markdown,我想知道是否有任何方法可以替换字符串中的子字符串,但可以在字符串之间交替替换它们。也就是说,匹配字符串的所有出现处,“**”,并将第一个出现处替换为“”,将下一个出现处替换为“”(然后重复该模式) 输入如下:“这是一个带有**多个**强标记的句子,在输出时**强**” 返回的输出将是:“这是一个带有多个strong标记的句子,在输出时将strong”您可以使用正则表达式的重载。替换接受匹配计算器的委托: using System.Text.RegularExpressions; class P
“**”
,并将第一个出现处替换为“”
,将下一个出现处替换为“”
(然后重复该模式)
输入如下:“这是一个带有**多个**强标记的句子,在输出时**强**”
返回的输出将是:
“这是一个带有多个strong标记的句子,在输出时将strong”
您可以使用正则表达式的重载。替换接受匹配计算器的委托:
using System.Text.RegularExpressions;
class Program {
static void Main(string[] args) {
string toReplace = "This is a sentence with **multiple** strong tags which will be **strong** upon output";
int index = 0;
string replaced = Regex.Replace(toReplace, @"\*\*", (m) => {
index++;
if (index % 2 == 1) {
return "<strong>";
} else {
return "</strong>";
}
});
}
}
使用System.Text.regular表达式;
班级计划{
静态void Main(字符串[]参数){
string toReplace=“这是一个带有**多个**强标记的句子,输出时将为**强**”;
int指数=0;
字符串替换=Regex.Replace(toReplace,@“\*\*”,(m)=>{
索引++;
如果(索引%2==1){
返回“”;
}否则{
返回“”;
}
});
}
}
最简单的方法是为**(内容)**
实际使用regex,而不仅仅是**
。然后将其替换为(内容),就完成了
您可能还想在上查看MarkdownSharp,因为这确实是您想要使用的功能。尝试一下
var sourceString = "This is a sentence with **multiple** strong tags which will be **strong** upon output";
var resultString = sourceString.Replace(" **","<strong>");
resultString = sourceString.Replace("** ","</strong>");
var sourceString=“这是一个包含**多个**强标记的句子,在输出时将**强**”;
var resultString=sourceString.Replace(“**”和“”);
resultString=sourceString.Replace(“**”和“”);
干杯,我认为您应该使用正则表达式来匹配模式并替换它,这很简单。您可以使用正则表达式来解决此问题:
string sentence = "This is a sentence with **multiple** strong tags which will be **strong** upon output";
var expression = new Regex(@"(\*\*([a-z]+)\*\*)");
string result = expression.Replace(sentence, (m) => string.Concat("<strong>", m.Groups[2].Value, "</strong>"));
string-session=“这是一个包含**多个**强标记的句子,输出时将**强**”;
var表达式=新正则表达式(@“(\*\*([a-z]+)\*\*)”;
字符串结果=表达式.Replace(句子,(m)=>string.Concat(“”,m.Groups[2]。值“”);
这种方法会自动处理语法错误(想想像这个**字应该是**强**
)这样的字符串。你可以在循环中使用带有起始索引的IndexOf
。@CodeInChaos我真的没有经常使用IndexOf,我将对此进行研究,但您是否有任何实现方法?这显然不符合他的规范。如果空格不存在,这将导致混乱,而且没有理由这样做。这适用于我指定的输入,但如果**
的起始组位于字符串的开头,你有问题这是最干净的方法,+1。我看过MarkDownSharp,但我只想输入粗体,而不是整个功能。我可能会开始使用它,当它成为更多的要求often@Paolo我只是再次使用了它,并意识到如果您将if
语句替换为返回索引%2==1,代码可以缩短,并且看起来更好一些?“”:“”代码>答案过于简单化。请提供尚未提供的代码示例。