C# 对于特定文本或字符的多次替换,合适的设计模式是什么
我需要替换数字、html标记和特殊字符。我为每个目的创建了一个方法。例如,我为ReplaceSpecialCharacters、replaceThMLTAGS和ReplaceNumeric创建了方法。请注意,还有一些额外的替换方法正在出现。我的问题是什么是合适的设计模式?我正在考虑使用策略或工厂模式来解决这个问题,Decorator模式是否适用于这个需求C# 对于特定文本或字符的多次替换,合适的设计模式是什么,c#,design-patterns,c#-4.0,C#,Design Patterns,C# 4.0,我需要替换数字、html标记和特殊字符。我为每个目的创建了一个方法。例如,我为ReplaceSpecialCharacters、replaceThMLTAGS和ReplaceNumeric创建了方法。请注意,还有一些额外的替换方法正在出现。我的问题是什么是合适的设计模式?我正在考虑使用策略或工厂模式来解决这个问题,Decorator模式是否适用于这个需求 sample code var text="12233333333<body>CLEANTEXT!@#$%^&*()<
sample code
var text="12233333333<body>CLEANTEXT!@#$%^&*()</body>"
var cleanText= ReplaceHTMLTags(text)
cleanText= ReplaceNumeric(cleaText)
cleanText= ReplaceSpecialCharacters(cleaText)
示例代码
var text=“12233333333CLEANTEXT!@$%^&*()”
var cleanText=replaceThMLTAGS(文本)
cleanText=ReplaceNumeric(cleanText)
cleanText=替换特殊字符(cleanText)
这似乎是一个很好的策略模式使用。
这将帮助您在运行时选择算法,如HTMLReplacementBehavior、NumericReplacementBehavior
或者,这也可以通过利用Builder来实现,您可以像
var replacementPlan = new ReplacementBuilder(ReplaceHTMLTags ).Add(ReplaceSpecialCharacters).Add(ReplaceNumeric);
稍后执行replace方法,该方法迭代调用各种replace逻辑。我的建议是为每个replace创建一个字符串扩展方法
public static class MyStringExtension
{
public static string ReplaceHTMLTags(this string text)
{
return Regex.Replace(text, "<.*?>", String.Empty);
}
}
您可以创建自己的管道或将调用组织为fluent api,但这是基于性能的观点,迭代和分配
string
3次代价很高,一次迭代也可以完成。e、 g.Replace(字符串输入,bool htmlTag,bool numeric,bool specialChar)
这将是一个非常复杂的小而简单的任务,可以用正则表达式来完成。@AndréSanson,是的,你的正确答案是肯定的,但是即将出现的Replace方法比前面提到的3个例子复杂得多。谢谢。同时考虑管道模式。如果这个答案有帮助,请删除否决票。谢谢
text.ReplaceHTMLTags().ReplaceNumeric().ReplaceSpecialCharacters()