【问题标题】:ReSharper reorder String.Format() argumentsReSharper 重新排序 String.Format() 参数
【发布时间】:2013-09-24 15:06:36
【问题描述】:

我经常发现自己在写一些愚蠢的东西:

String.Format("{1}: {0}", reason, message);

或类似但有更多字符串占位符的东西。

ReSharper 中是否有自动重构来更改占位符和参数的顺序?如果我尝试手动更改顺序,我往往会弄乱映射。

显然,上面的例子是微不足道的。我在现实中所做的往往是这样写:

String.Format("{0}.{2} = {1}.{3} AND {0}.{4} = {1}.{5} AND {6}.{7} = {1}.{8}",
  table1Alias, table2Alias, col1A, col2A, col1B, col2B, table3Alias, col3C, col2C);

我心想,如果我可以将 table3Alias 移到其他别名旁边的前面,那就太好了。

(ReSharper 7.1.3)

【问题讨论】:

    标签: c# resharper


    【解决方案1】:

    只需将光标放在 table3Alias 中,然后按 Ctrl + Alt + Shift + 左/右箭头。这会改变函数调用中的参数顺序。

    当您按下 Ctrl + Shift + R

    时,还有一个删除选项

    还有一个添加格式项的快捷方式。结合这些,您可以做您想做的事情。您要求的确切功能未实现。

    【讨论】:

    • 这不会改变字符串中对应的占位符。
    • 不,这会改变参数的顺序。这不是 OP 想要的吗?
    • +1 反正是个很酷的把戏,不知道我怎么不知道这个
    • 我想更改参数的顺序并让占位符保持同步。
    • string.Format("{0}, {1}, {2}", foo, bar, fubar)。将光标放在fubar 上,然后按 Ctrl + Alt + Shift + Left。结果是:string.Format("{0}, {1}, {2}", foo, fubar, bar)。但是 OP 想要这个:string.Format("{0}, {2}, {1}", foo, fubar, bar)
    【解决方案2】:

    对于 C# 6+(ReSharper 10+ / 2016+):

    • 将光标放在 string.Format
    • Alt + Enter
    • 选择Use string interpolation
    • 再次按 Alt + Enter
    • 选择Convert to string.Format

    【讨论】:

    • 这是一种偷偷摸摸的做法。但如果我使用 C# 6,我为什么还要string.Format
    【解决方案3】:

    不,没有这样的功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-03
      • 1970-01-01
      • 1970-01-01
      • 2010-11-29
      • 2016-12-27
      • 1970-01-01
      相关资源
      最近更新 更多