【问题标题】:How can I make Visual Studio find only single slashes and not double slashes?如何让 Visual Studio 只找到单斜杠而不是双斜杠?
【发布时间】:2017-11-28 05:30:21
【问题描述】:

为了增加浮点数的精度,我必须通过一堆 C# 类,并且在有除法运算的地方,将分子和分母都乘以 1000。所以假设我们有一个分子 n 和 a分母,d.那么原来的样子是这样的:n / d。我需要将其更改为 (n*1000)/(d*1000)。

为了搜索所有除法运算符,我在 Visual Studio 2013 Ultimate 中使用了查找功能 (ctrl+f)。我正在寻找所有的“/”。问题是 find 函数还会拾取 cmets 中的斜线。怎么可以让 find 函数只找到单斜杠 '/' 而不是双斜杠 '//'?

感谢您的任何建议。

【问题讨论】:

  • 你试过正则表达式吗?
  • 没有。我将如何编写正则表达式?
  • 试一试。如果您有问题,请反馈。
  • 作为旁注,你知道(n * 1000) / (d * 1000) = n / d 吗?所以你不会改变任何东西。
  • 顺便说一句,我认为这不会以任何方式改变精度。

标签: c# visual-studio-2013


【解决方案1】:

正则表达式查找(Ctrl+Shift+F 并选中 Use Regular Expressions 选项)[^/<]/[^/>]在您的解决方案中 - 基本上是 /

  • 前面没有另一个 /<(即关闭 XML 注释标签,如 </para>
  • 后面没有另一个 />(即独立的 XML 注释标签,如 <see cref="Foo"/>

在快速检查大约 80 个项目的解决方案时,我看到使用这种方法的唯一误报是......

  • 日期(例如1/1/2014
  • / 在 cmets 中(例如 Note that an up/down change....

...但其他人可能会根据您的代码库出现 - 例如:

  • 网址(例如http://stackoverflow.com/users/1810429/j0e3gan
  • XPath(例如/Customer/Address/City/text()

更好

如果您始终在除法运算符及其操作数之间放置空格,则可以稍微收紧正则表达式以减轻这些误报,将其更改为...

[^/<]/[^/>]

...到...

[^/<] +/ +[^/>]

...+ 当然会匹配一个或多个空格。

【讨论】:

    【解决方案2】:

    您可以在 VS2013 中找到单个 /,使用以下命令:

    • 输入Ctrl+f
    • 在搜索框中输入(?&lt;!/)/(?!/)
    • 在搜索框下,点击代表.*的图标
    • 选择Entire Solution
    • 启动搜索

    但是,你必须知道结果并不是你真正想要的,因为,你会发现 XAML 代码、URL、......

    【讨论】:

    • 是的,它会找到 xaml 代码,但至少它不会获取 cmets。感谢您的建议。
    【解决方案3】:

    试试这个正则表达式:

    [^/]

    “不是一个斜线,后面是一个斜线,后面不是一个斜线”

    【讨论】:

    • 这没关系...但也匹配 XML cmets 中的结束标记和独立标记。
    • 更新排除和/>
    【解决方案4】:

    正则表达式搜索 (?&lt;!/)/(?!/) 应该只找到单个斜杠,通过使用零宽度负后向/前瞻断言。小查找对话框中的.* 按钮打开正则表达式搜索。在“查找选项”下有一个用于完整搜索对话框的复选框(Ctrl+Shift+F)。

    【讨论】:

    • 这只是用消极的后视和前瞻来修饰@mclaassen 的马马虎虎的正则表达式 - 相同的马马虎虎的结果,并且由于消极的后瞻和前瞻而不必要地复杂化。
    • @J0e3gan 好吧,在我的辩护中,我首先回答了问题,而不是通灵,我不知道我没有在(不存在的)之前的答案中添加任何内容。虽然我很高兴得到更正,但您可能需要处理您的交付。
    猜你喜欢
    • 1970-01-01
    • 2010-12-14
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2020-02-01
    • 2012-06-16
    • 1970-01-01
    相关资源
    最近更新 更多