C# Resharper重新格式化String.Format()参数

C# Resharper重新格式化String.Format()参数,c#,resharper,C#,Resharper,我经常发现自己在写一些愚蠢的东西,比如: String.Format("{1}: {0}", reason, message); 或者类似的东西,但是有更多的字符串占位符 Resharper中是否有自动重构来更改占位符和参数的顺序?如果我试图用手改变顺序,我有一种弄乱映射的倾向 显然,上面的例子并不重要。事实上,我所做的通常是写一些类似的东西: String.Format("{0}.{2} = {1}.{3} AND {0}.{4} = {1}.{5} AND {6}.{7} = {1}.{8

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

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);
我心里想,如果我能把表3Alias移到前面其他别名旁边那就太好了


(Resharper 7.1.3)

只需将光标放在table3Alias中,然后按Ctrl+Alt+Shift+Left/Right箭头即可。这将更改函数调用中的参数顺序

按Ctrl+Shift+R还可以删除一个选项


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

不,没有此类功能。

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

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

这不会更改字符串中相应的占位符。不,这会更改参数的顺序。这不是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)
这是一种偷偷摸摸的方法。但是如果我使用C#6,为什么我还要
string.Format