如何处理有大量转义的字符串?

时间:2017-12-14 19:01:21

标签: c# escaping

我正在编写使用字符串比较的单元测试,以确保操作成功。我正在使用的字符串使用许多需要转义的字符进行编码。遍历每个字符串并手动添加转义字符是一项耗时的操作。有没有更方便的方法来处理这些类型的字符串?我想象一些C#功能,例如EscapeAll(),但我还没找到。

以下是需要大量转义的字符串示例:

<td class="name"><span id="153407 - 951"></span><a href=" / statfeed / statfeed.php ? page = mlb / mlbteam & amp; teamid = SAN + FRANCISCO & amp; season = ">951 SAN FRANCISCO GIANTS</a></td><td id="ajaxUpdating - 153407 - 951 - Pitcher" class="pitcher ">(r) cueto, j</td><td class="line">8o20</td><td class="line"><a onclick="openLineMovement('20170630', '335310265', 'MLB'); " href="javascript:; ">8.5o15 / 8.5 / 8.5u20</a></td><td id="ajaxUpdating - 153407 - 951 - Current" class="currentline ">8o20</td><td id="ajaxUpdating - 153407 - 951 - Line" class="line ">+1.5(-194)</td><td id="ajaxUpdating - 153407 - 951" class="score finalscore"><span id="ajaxUpdating - 153407 - 951 - score" class="score first">13</span><span id="ajaxUpdating - 153407 - 951 - progress" class="score progress">Over 8</span></td>";

我想也许我可以将字符串保存到文件中,并将文件读入字符串变量,然后我可以使用它来Assert。但另一方面,我不想隐藏文件中的字符串内容。能够直接读取包含测试夹具的* .cs文件中的字符串内容要好得多。我可能要求太多了?

4 个答案:

答案 0 :(得分:1)

  

通过每个字符串并且这是一个耗时的操作   手动添加转义字符。

您可以使用详细字符串

@"This is a ""verbose"" string"

双引号("")是在详细字符串中转义双引号(")的方法。您可以 使用IDE的“替换”工具用双引号替换原始字符串中的这些。

答案 1 :(得分:1)

在Visual Studio中,您可以转到项目属性页面上的“资源”选项卡并添加字符串资源。该页面允许您为字符串指定名称,值和注释。只需将其按原样粘贴到值列中即可。然后在您的代码中,您可以将其称为Resources.MyStringName。作为奖励,将鼠标悬停在代码中会弹出字符串的值(在弹出窗口中,长字符串会被截断)。

答案 2 :(得分:0)

使用原始字符串:

@"string with
embedded new line";

答案 3 :(得分:0)

即使使用冗长的字符串,您也必须将引号加倍。最简单的方法是创建一个单独的控制台应用程序,该应用程序直接从标准输入或从可以粘贴字符串的文件中获取输入,然后以转义形式将其吐出

.Replace("\\", "\\\\").Replace("\"", "\\\"");

会做