C# C中VB语句(“vbcrlf”)的字符串替换等效项#

C# C中VB语句(“vbcrlf”)的字符串替换等效项#,c#,vbscript,C#,Vbscript,从一些旧的VB代码复制C#中的函数,对电子邮件文本执行字符串操作。我不确定这是否在所有情况下都有效……有人能证实我对正确使用C代码的想法吗?这些是等价的吗 原始VB: function FixText(Mail_Text) dim Clean_Text Clean_Text = Mail_Text Clean_Text = Replace(Clean_Text, "=" & vbcrlf, "") Clean_Text = Replace(Clean_Text,

从一些旧的VB代码复制C#中的函数,对电子邮件文本执行字符串操作。我不确定这是否在所有情况下都有效……有人能证实我对正确使用C代码的想法吗?这些是等价的吗

原始VB:

function FixText(Mail_Text)
   dim Clean_Text
   Clean_Text = Mail_Text
   Clean_Text = Replace(Clean_Text, "=" & vbcrlf, "")
   Clean_Text = Replace(Clean_Text, ";" & vblrcf, "")
   ` ... other stuff
   FixText = Clean_Text
End Function
新的C#:


从技术上讲,它们不是
vbcrlf
是一个字符串常量,等于C#中的
“\r\n”

System.Environment.NewLine
是一个属性,在Windows系统上返回
“\r\n”
,但在基于Unix的系统(Linux和OS X)上返回
“\n”
,通常指“当前平台的行终止符”
vbcrlf
将始终是Windows CR+LF行终止符,无论代码在哪个平台上运行

你应该使用哪一个最终取决于文本的使用方式,而这不能从你问题中的其他信息中充分推断出来。

你使用C#:

  • \r
    是回车的转义序列
  • \n
    是新行的转义序列

感谢您的快速回复。这段代码只会在我正在编写的Windows系统服务中使用,因此,这么说来,它在这方面看起来正确吗?@user2696963如果这段代码只会在Windows上运行,那么是的,这两段代码在功能上实际上是等价的。如果有可能将其移植到*nix系统,则明智的做法是确定需要哪一行结束。(例如,HTTP需要CR+LF终止符,因此
Environment.NewLine
在这种情况下是错误的。这完全取决于您在这里构建的数据类型。)我完成了服务并完成了测试。代码使用System.Environment.NewLine条目运行得非常好。我还使用“=\r\n”和“;\r\n”对其进行了测试,这两种方法同样有效。谢谢你的意见+是的,我也想过。还要注意,第一行写为“=”&vbcrlf,第二行写为“;”&vblrcf。因此,条目是否应该被替换(“=\r\n”和替换(;\n\r“,”)?@CaryH
vblrcf
不是一个问题
vbcr
vblf
vbcrlf
都是有效常数。我假设
vblrcf
只是一个输入错误,但这可能是其他地方定义的另一个变量。你确定你发布的原始代码能正常工作吗?这可能是旧VB代码中的一个输入错误,我从未运行过它,只是从我收集的旧参考文件中挖掘出来的。
public String FixText(Mail_Text)
{
   String Clean_Text = Mail_Text;
   Clean_Text = Clean_Text.Replace("=" + System.Environment.NewLine, "");
   Clean_Text = Clean_Text.Replace(";" + System.Environment.NewLine, "");
   // ... other stuff
   return Clean_Text;
}
Clean_Text = Clean_Text.Replace("=\r\n", "");
Clean_Text = Clean_Text.Replace(";\r\n", "");