【问题标题】:Zero Width Space character in string literals: Detect and/or prevent字符串文字中的零宽度空格字符:检测和/或防止
【发布时间】:2015-08-14 15:15:24
【问题描述】:

Visual Studio 允许将 Unicode 字符 Zero Width Space (U+200B) 粘贴到代码编辑器中。这个角色(顾名思义)是不可见的。

这可能会导致令人讨厌的错误,例如我刚刚花时间进行故障排除的错误,其中HttpWebRequest.CreateHttp(string url) 在传递看似无害的字符串文字"​http://www.umich.edu" 时抛出了UriFormatException

发生异常是因为该字符串文字中的第一个字符不是h,因为它看起来是零宽度空格字符。当我从网页正文复制 URL 时,它被放到剪贴板上,当我在代码编辑器窗口中按 Ctrl+V 时,它被 Visual Studio 忠实地粘贴到我的代码中。

打开“查看空白”选项(编辑 > 高级 > 查看空白)不会导致 Visual Studio 显示存在零宽度空白字符。

我希望 Visual Studio:

  • 当我的代码中的字符串文字中存在零宽度空格字符(或其他不可见字符)时,给出某种指示或警告,和/或
  • 首先防止将此类控制字符粘贴到代码编辑器中。

有没有办法让 Visual Studio 做到这一点?

【问题讨论】:

  • 所以,我们在编辑器中也遇到了同样的问题。我们发现唯一要做的就是从 Visual Studio 的反馈区域向 Microsoft 报告。同时,您可以使用设置为使用正则表达式的查找选项的查找替换来擦洗它,这作为您的查找术语[\u200B-\u200D\uFEFF],替换文本为空白。可悲的是,这对主动提醒或阻止它没有任何作用:(
  • 有什么比 UriFormatException 更能说明 Uri 有问题的信息呢?这不是一个错误,你学到了一些新东西 :) 默默地破解 url,这是一个错误生成器。
  • 完成,谢谢! visualstudio.uservoice.com/forums/121579-visual-studio-2015/… 同时,我仍然对我们今天可用的 Visual Studio 2015 中可用的任何解决方案感兴趣。
  • 我陷入了同样的陷阱,花了大约 3 个小时寻找导致它的原因。由于 gremlin 的原因,端点无法正常工作。这个零宽度的空间是一种邪恶。发明这个角色的人一定对开发者很生气。 :)
  • 注意:VSCode(同样,不是 Visual Studio)现在呈现 Unicode“控制”字符:code.visualstudio.com/updates/…。但是:这个不可见字符(“零宽度空间”)无论如何不是控件,并且会在 VSCode 上触发与 Visual Studio 相同的问题。

标签: string visual-studio


【解决方案1】:

用于 Visual Studio Code 的 Gremlins 跟踪器对我有用。
https://github.com/nhoizey/vscode-gremlins

P.s.:IntelliJ 识别那些隐藏的麻烦字符 OOTB

【讨论】:

  • 不错!是否有适用于 Visual Studio(不是 Visual Studio Code)的此扩展版本?
  • Gremlins 追踪器为我工作,谢谢!
【解决方案2】:

如果您使用的是“VSCODE”,那很简单,只需在 vscode 中安装 gremlins 即可。在有 gremlins 的地方安装后,删除那些空格(用红线),你就可以开始了。它对我有用。

【讨论】:

猜你喜欢
  • 2012-07-03
  • 2018-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-28
  • 2015-10-17
  • 2018-12-26
  • 1970-01-01
相关资源
最近更新 更多