【问题标题】:Convert string replacement from VB.NET to C#将字符串替换从 VB.NET 转换为 C#
【发布时间】:2020-11-17 15:51:05
【问题描述】:

我们有一个旧的 VB.net 应用程序正在用 WPF 和 C# 重写。 该应用程序的功能之一是打印条形码,我们有很多使用 EPL 的旧打印机。

请有人帮忙将下面的行转换为 C# 等效项。

Return Server.UrlEncode(value.Replace(Chr(13) & Chr(10), "_CRLF")
                             .Replace(Chr(34),"_QUOT")
                             .Replace(Chr(13), "_CR")
                             .Replace(Chr(10), "_LF")
                             .Replace(Chr(32), "_SPAC"))

谢谢

【问题讨论】:

  • 这些只是 .NET 调用。 String.Replace 在 VB.NET 和 C# 中的工作方式相同吗?你明白Chr(13) 是什么吗?或者Chr() 做了什么?你试过查一下吗?无论如何都没有理由在原始代码中使用Chr,可以使用\r\n\" 等转义序列
  • value.Replace("\n", "_CRLF") .Replace("","_QUOT") .Replace("\r", "_CR") .Replace("\f" , "_LF") .Replace(" ", "_SPAC")
  • @PanagiotisKanavos:VB 没有转义序列,那么按照您的建议,您将如何在原始代码中做到这一点?

标签: c# vb.net replace urlencode


【解决方案1】:

您好,您也可以在 C# 中这样写:

Return Server.UrlEncode(value.Replace("\r\n", "_CRLF")
                             .Replace("\"","_QUOT")
                             .Replace("\r", "_CR")
                             .Replace("\n", "_LF")
                             .Replace(" ", "_SPAC"))

在您的代码中,Chr(number) 数字表示 ascii 表中 char 的等效值,并且 Chr() 函数返回一个包含与指定字符代码关联的字符的字符串。

查看 ascii 表 Dec 列 http://www.asciitable.com

【讨论】:

  • 这是错误的,因为在 Windows 中,'\n' 是 0x0D 和 0x0A。
  • @jdweng 不,\n 是 LF。您需要使用 \r\n 来获得 Windows 样式的换行符。如果你在 Linqpad 中尝试"\n".Length,你会得到1
【解决方案2】:

像这样使用它。

       char[] spChs =  Encoding.ASCII.GetChars(new byte[]{ 13, 10, 34, 32});            
       string newString = value.Replace(spChs[0].ToString()+ spChs[1].ToString(), "_CRLF").Replace(spChs[2].ToString(), "_QUOT").Replace(spChs[0].ToString(), "_CR").Replace(spChs[1].ToString(), "_LF").Replace(spChs[3].ToString(), "_SPAC");

【讨论】:

  • 这两个数组使代码更难阅读而没有任何好处
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-27
  • 1970-01-01
  • 2013-08-20
  • 2022-01-11
  • 2011-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多