c# - 在 C# 中的 REPLACE 函数中添加 Case 语句

标签 c# ssis script-task

首先,我不是一个 C# 人,所以请耐心等待我。 我需要在 SSIS 中的脚本任务中将出现的“D:”替换为“d$”。我确实使用替换函数来执行此操作,但问题是,这会对另一行产生意想不到的后果。

例如,脚本任务发送一封电子邮件,电子邮件标题为\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 行

当我使用替换功能时,正文线也会受到 d$ 符号的影响,这就是我试图避免的。我可以用 C# 编写一个条件 REPLACE 函数吗?或者还有其他方法来处理这个问题吗?

谢谢, 房车。

最佳答案

你研究过正则表达式吗?

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

这是一个如何使用它的示例...请注意,我还没有对此进行测试以确定它是否完全起作用,但它应该可以帮助您开始沿着这条路走:

EG

// 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/

相关文章:

c# - 在 SSIS 的脚本任务中连接到 SQL 数据库

c# - 使用 Microsoft.Exchange.WebServices 的 SSIS 脚本任务

c# - VBA 和 "Class doesn' t 支持自动化或不支持预期的界面”

c# - 如何在 EditorFor HTMLHelper 中的 MVC 4 DateTime 中附加前导 0?

C# SSIS 数据流组件 - 创建自定义输入列

sql - 如何用 CSV 数据更新 SQL 表?

sql-server - 使用 "There is a compilation error. Do you want to save anyway"消息保存后,C# 代码从脚本任务中消失

C# 桌面应用程序。代码混淆。 .Net Reactor 混淆的代码很容易反混淆

c# - 如何告知 NuGet 过去的迁移

sql-server-2008 - 如何在 SQL Server 中将变量中的全名拆分为名字和姓氏?