我希望在C#中将文本作为字符串输入,如 BEFORE_PROCESSING 标题下所示。此文本需要格式化为:
例如,格式化完成后, BEFORE_PROCESSING 标题中的句子应该与 AFTER_PROCESSING 下的文字类似。
我的问题是在C#中实现此文本处理业务的最有效方法是什么?它会使用正则表达式还是过度杀伤?您认为可能存在更好的替代方案吗?谢谢。
(我正在使用C#4)
BEFORE_PROCESSING
"Sentence 1 <style styles='B;fg:Green'>STYLED SENTENCE</style> Sentence 2"
AFTER_PROCESSING
"<style styles='B'>Sentence 1 </style>
<style styles='B;fg:Red'>STYLED SENTENCE</style>
<style styles='B'>Sentence 2</style>"
答案 0 :(得分:0)
您可以根据正则表达式尝试以下解决方案:
string myLine = "Sentence 1<style styles='B;fg:Green'>STYLED SENTENCE</style>Sentence 2";
const string splitLinesRegex = @"((?<Styled>\<style[^\>]*\>[^\<\>]*\</style\>)|(?<NoStyle>[^\<\>]*))";
var splitLinesMatch = Regex.Matches(myLine, splitLinesRegex, RegexOptions.Compiled);
List<string> styledLinesBis = new List<string>();
foreach (Match item in splitLinesMatch)
{
if (item.Length > 0)
{
if (!string.IsNullOrEmpty(item.Groups["Styled"].Value))
styledLinesBis.Add(string.Format("<style styles='B'>{0}</style> ", item.Groups["Styled"].Value));
if (!string.IsNullOrEmpty(item.Groups["NoStyle"].Value))
styledLinesBis.Add(string.Format("<style styles='B;fg:Red'>{0}</style> ", item.Groups["NoStyle"].Value));
}
}
你只需要使用string.Join语句加入字符串。