【问题标题】:Visual Studio Find and Replace VariablesVisual Studio 查找和替换变量
【发布时间】:2010-10-23 00:42:26
【问题描述】:

我正在尝试将两个字母的状态缩写替换为文本,然后是缩写。 最终我想找到并替换其余的。如何捕获找到的值? .... 我试过 \1 和 {1}

AL  32.2679134368897    -86.5251510620117
AR  35.2315113544464    -92.2926173210144
AZ  33.3440766538127    -111.955985217148
CO  39.7098631425337    -104.899092934348

if( usState == "AZ") dpos= "33.4736704187888" + " " + "-112.043138087587";
if( usState == "CA") dpos= "36.0783581515733" + " " + " -119.868895584259";
if( usState == "CO") dpos= "39.8950788035537" + " " + " -104.831521872318";
if( usState == "CT") dpos= "41.6001570945562" + " " + " -72.6606015937273";

更新 $1 不起作用。

我发现:[A-Z][A-Z] 替换为: if( usState == "$1

【问题讨论】:

    标签: visual-studio variables replace find


    【解决方案1】:

    奇怪的是,Visual Studio 正则表达式不同于普通的 .Net 正则表达式。它们的标记和替换语法略有不同。为了标记一段文本以供以后匹配,您必须将其包裹在大括号 {} 中。然后您可以在替换字符串中使用 \n ,其中 n 是第 n 个标记表达式。对于您的场景,这里是您应该使用的字符串

    • 查找:{[A-Z][A-Z]}
    • 替换:if( usState == "\1")

    【讨论】:

    • 工作就像一个魅力。谢谢。
    【解决方案2】:

    我的正则表达式匹配器匹配 $1。试试看。

    【讨论】:

      【解决方案3】:

      我可能不明白你的问题,但是你为什么不记录一个临时宏来做转换呢?

      【讨论】:

        【解决方案4】:

        由于这个问题似乎与https://stackoverflow.com/a/3147177/154480 重复,但我首先发现了这个问题:从Visual Studio 2012 开始,您可以使用(pattern)$1。作为这个特定问题的一个例子,通过if( usState == "$1")找到([A-Z]{2})

        【讨论】:

          【解决方案5】:

          将 [A-Z][A-Z] 括在括号中,它会捕获它;然后,在替换字符串中使用 \1 来引用捕获。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-10-29
            • 2012-04-15
            • 2011-08-23
            • 2011-03-09
            • 1970-01-01
            相关资源
            最近更新 更多