代码之家  ›  专栏  ›  技术社区  ›  sapbucket

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

  •  -1
  • sapbucket  · 技术社区  · 7 年前

    我正在编写使用字符串比较来断言操作成功的单元测试。我正在处理的字符串是用许多需要转义的字符编码的。遍历每个字符串并手动添加转义字符是一个耗时的操作。有没有更方便的方法来处理这些类型的字符串?我在想象一些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>";
    

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

    4 回复  |  直到 7 年前
        1
  •  1
  •   Mike    7 年前

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

        2
  •  1
  •   adjan    7 年前

    遍历每个字符串和 手动添加转义字符。

    可以使用详细字符串

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

    双引号( "" )是逃避双引号的方法( " )在详细字符串中。你可以 使用IDE的“replace”工具将原始字符串替换为双引号。

        3
  •  0
  •   SoronelHaetir    7 年前

    使用原始字符串:

    @"string with
    embedded new line";
    
        4
  •  0
  •   Steve    7 年前

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

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

    会的