首先,我不是c#人,所以请紧紧抓住这个人。
我需要在SSIS中的脚本任务上将出现的“ D:”替换为“ d $”。我当然可以使用replace函数来执行此操作,但是问题是,这会在另一行上产生意想不到的后果。

例如,脚本任务发出一封电子邮件,并且电子邮件的标题为\ servername \ d $ \ further_path。电子邮件的正文显示为“ UID:1:MESSAGE”

发送电子邮件的代码行如下所示:

myHtmlMessage = new MailMessage(Dts.Variables["MailFromAddress"].Value.ToString(), Dts.Variables["MailRecipients"].Value.ToString(), Dts.Variables["MailSubjectSuccess"].Value.ToString(), Dts.Variables["MailBodySuccess"].Value.ToString().Replace("D:", @"\d$   "));


我得到的当前输出是:

Server Start Time: 3/21/2017 7:25:33 AM
Server End Time: 3/21/2017 7:27:39 AM
Total Run Time: 00:02:06.9402516
Log Folder: \\ServerNamed$\Apps\SSIS\Logs\

UId$ 2 -


预期的输出是:

Server Start Time: 3/21/2017 7:25:33 AM
Server End Time: 3/21/2017 7:27:39 AM
Total Run Time: 00:02:06.9402516
Log Folder: \\ServerNamed$\Apps\SSIS\Logs\

UID: 2 -


查看日志文件夹行和UID行

当我使用replace函数时,正文行也会受到d $符号的影响,这就是我要避免的事情。我可以在C#中编写条件替换函数吗,还是有其他方法可以处理此问题?

谢谢,
房车

最佳答案

您是否研究过正则表达式?

https://msdn.microsoft.com/en-us/library/xwewhkd1(v=vs.110).aspx

这是您如何使用它的示例...请注意,我尚未测试此功能以确定它是否可以正常运行,但是它应该可以帮助您入门:

例如。

// Assign your strings into variables to make your code cleaner:
string fromAddress = Dts.Variables["MailFromAddress"].Value.ToString();
string recipients = Dts.Variables["MailRecipients"].Value.ToString();
string subject = Dts.Variables["MailSubjectSuccess"].Value.ToString();
string body = Dts.Variables["MailBodySuccess"].Value.ToString();

// Replace D: in body
string pattern = "(Log Folder.+)D:"; // Capture the D: only if it's on the Log Folder line.
string replacement = "$1\\d$   "; // What we're replacing with.
Regex rgx = new Regex(pattern);
body = rgx.Replace(body, replacement);

// Build my HTML message.
myHtmlMessage = new MailMessage(fromAddress, recipients, subject, body);


我希望这有帮助...

注意-您可以在http://www.regular-expressions.info/上了解有关正则表达式语法的更多信息。如果您想了解这些引擎如何工作,它们可能如何不同以及在特定上下文下查找特定表达式的最佳语法,则值得研究。

关于c# - 在C#中向REPLACE函数添加Case语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44267892/

10-17 02:47