从字符串中删除隐藏的字符

时间:2018-08-24 18:10:49

标签: c# html regex

我正在尝试从下面的字符串中删除标记

 string name = results[i].ToString();
 var b = Regex.Replace(name, "<.*?>",string.Empty);

字符串name看起来像&lt;div class="ExternalClassA6E"&gt;&lt;p&gt;​&lt;span&gt;GET6&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;

当我调试时,在b中看不到任何多余的spl字符。但是,当在应用程序中看到它后,它在变量b的前面运行了?,例如?GET6。这里的标记有什么特别之处吗?

1 个答案:

答案 0 :(得分:3)

我在上面复制了您的文本并对其进行了一些测试,它的行为确实非常奇怪! 您的字符串中似乎存在一个实际的隐藏字符,该字符不会在编辑器中显示,但在将字符串解析或写入控制台时才会出现。

为了测试您在说什么,我将您的字符串粘贴到编辑器中并运行了一些代码,并且在输出中还看到了?字符。因此,我键入了相同的文本并运行了相同的测试,并且那里没有?

private static void Main()
{
    string copiedText = "&gt;​&lt;";
    string typedText  = "&gt;&lt;";

    Console.WriteLine("\nCopied Text Results\n" + "-------------------");
    Console.WriteLine("\nLength: " + copiedText.Length);
    Console.WriteLine("\nCharacters and ascii values:");
    Console.WriteLine(string.Join(", ",
        copiedText.Select(character => character + " = " + (int) character)));
    Console.WriteLine("\nString value:");
    Console.WriteLine(copiedText);
    Console.WriteLine("\nHtml Decoded value:");
    Console.WriteLine(HttpUtility.HtmlDecode(copiedText));

    Console.WriteLine(Environment.NewLine + new string('-', Console.WindowWidth));

    Console.WriteLine("\nTyped Text Results\n" + "------------------");
    Console.WriteLine("\nLength: " + typedText.Length);
    Console.WriteLine("\nCharacters and ascii values:");
    Console.WriteLine(string.Join(", ",
        typedText.Select(character => character + " = " + (int) character)));
    Console.WriteLine("\nString value:");
    Console.WriteLine(typedText);
    Console.WriteLine("\nHtml Decoded value:");
    Console.WriteLine(HttpUtility.HtmlDecode(typedText));

    GetKeyFromUser("\nDone! Press any key to exit...");
}

输出

![enter image description here

我想这并不是一个真正的答案,所以我会尽快删除它,但也许它会激发其他人提供一些反馈。