gpt4 book ai didi

c# - 如何在调试期间检测字符串中的隐藏字符(例如零宽度空格)

转载 作者:太空狗 更新时间:2023-10-29 20:08:13 26 4
gpt4 key购买 nike

是否有任何简单的方法来检测(在调试期间)该字符串包含一些隐藏字符(例如零宽度空格)?

示例:在调试过程中,我正在比较两个不同的字符串,它们在我看来是一样的。当然,它们在一些隐藏的特征上有所不同。如何找出差异?

我在 Visual Studio 的“立即窗口”中使用了 string.ToCharArray() 方法,但必须有更舒适的方法。

最佳答案

您可以在即时窗口中使用它:

str.Contains("\u8203");

或者将它放在监 window 口中,这样您只需单击监视值附近的刷新按钮即可查看结果,而不是立即重新输入它(尽管您始终可以按向上键然后输入重新输入最后一条命令!)

要检查任何隐藏字符,您可以使用包含所有隐藏字符的静态数组并检查:

HIDDENS.Any(c => str.Contains(c.ToString())

甚至最好将隐藏的字符保存为一个长度的字符串,然后执行:

HIDDENS.Any(str.Contains)

或者您可以非常老练并执行此操作:

private static readonly Bitmap BMP = new Bitmap(1000, 1000);
private static readonly Graphics GRAPHICS = Graphics.FromImage(BMP);
private static readonly Font FONT = new Font("Arial", 20);
private static readonly RectangleF RECT = new RectangleF(0, 0, 1000, 1000);

public static bool CheckInvisibleChars(string text)
{
var stringFormat1 = new StringFormat(StringFormatFlags.MeasureTrailingSpaces);
stringFormat1.SetMeasurableCharacterRanges(
Enumerable.Range(0, text.Length - 2).Select(i => new CharacterRange(i, 1)).ToArray());

return GRAPHICS.MeasureCharacterRanges(text, FONT, RECT, stringFormat1).Any(
reg => reg.GetBounds(GRAPHICS).Width.Equals(0f));
}

从这里应该也很容易返回关于每个隐藏角色的信息,等等。

关于c# - 如何在调试期间检测字符串中的隐藏字符(例如零宽度空格),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9993069/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com