ReSharper重新排列String.Format()参数。

7

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

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)

3个回答

4

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

  • 将光标放在string.Format处
  • 按下 Alt + Enter
  • 选择使用字符串插值
  • 再次按下 Alt + Enter
  • 选择转换为string.Format

这是一个偷懒的方法。但是如果我使用C# 6,我为什么还需要string.Format呢? - Wolfsblvt

1

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

还有一个选项,可以在按下Ctrl + Shift + R时删除一个。

enter image description here

还有一种快捷方式可以添加格式项。你可以尝试将它们组合起来实现你想要的功能,但你所要求的确切功能目前未被实现。


3
这不会改变字符串中相应的占位符。 - Daniel Hilgarth
不行,那会改变参数的顺序。这不是楼主想要的吗? - Ufuk Hacıoğulları
+1,感觉这是一个很酷的技巧,不知道为什么我之前不知道它。 - NDJ
1
我想改变参数的顺序,并保持占位符同步。 - Jonny
2
`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)"。 - Daniel Hilgarth
是的,ReSharper没有这个功能。 - Ufuk Hacıoğulları

1
不,没有这样的功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接