我经常发现自己写作
var message = "Hello {0}";
然后返回并输入
var message = string.Format("Hello {0}", world);
如果我在输入字符串时会很好,当我把“放在最后,resharper发现字符串中有一个参数并立即用string.Format方法包围字符串并将光标放在第一个论点。
有直接的方法吗?我正在使用Resharper 6.1
答案 0 :(得分:16)
只需在dumber中输入:
"Hello " + world
Alt + Enter 输入,完成 1 :
string.Format("Hello {0}", world);
显然,当整个事情变得复杂得多时,这也有效。我知道它会删除对.ToString()
的无用调用,我怀疑它会自动解除任何格式表达式,例如
int i = 42;
"i = " + i.ToString("X2");
Alt + Enter键 输入
string.Format("i = {0:X2}", i);
1 如果你运气不好/周围的代码中包含许多触发Resharper建议的东西(?),那么可能必须将光标放在其中一个+
运算符上
答案 1 :(得分:3)
答案 2 :(得分:2)
由于这个原因,我最终为名为FormatWith(arg0, ar1...)
的字符串编写了一个扩展方法。然后我发现Humanizer库做了同样的事情。添加Humanizer NuGet包,现在您可以编写"Heres my formatted string on the {0}st try!".FormatWith(1)"
,希望减少弹跳。如果您有ReSharper之类的东西,它会使用参数突出显示匹配的placemarkkers,请安装Humanizer Annotations R# Extension,然后您将其取回。
答案 3 :(得分:1)
您可以使用Visual Studio代码段(即没有ReSharper)几乎执行此操作。
将以下内容另存为.snippet
扩展名的文件。
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippet Format="1.0.0" xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<Header>
<Title>string format</Title>
<Author>Matthew Strawbridge</Author>
<Description>Wraps the selected text with string.Format</Description>
<SnippetTypes>
<SnippetType>SurroundsWith</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>variable</ID>
<Default>value</Default>
</Literal>
</Declarations>
<Code Language="CSharp">
<![CDATA[string.Format($selected$, $variable$);]]>
</Code>
</Snippet>
</CodeSnippet>
然后您可以通过工具|加载它Code Snippets Manager |导入强>
在代码段可用后,您可以输入
var message = "Hello {0}"
但你必须选择字符串,然后按 Ctrl K Ctrl S 并选择要应用它的代码段名称。这会产生
var message = string.Format("Hello {0}", value);
选择value
部分进行编辑。
修改:还有一个Snippet Designer extension可以让您更轻松地使用代码段。
答案 4 :(得分:1)
这是Matthew视觉工作室代码片段的替代品。此代码段要求输入变量名称,但默认为message是可选的,唯一需要的是变量名称。 HTH
看起来像:
var message = string.Format( "abc {0}", variable );
作为默认值(abc {0}是突出显示的文本)
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>String Format</Title>
<Author>OmegaMan</Author>
<Description>Surrounded text gets format</Description>
<HelpUrl></HelpUrl>
<SnippetTypes />
<Keywords />
<Shortcut>#SF</Shortcut>
</Header>
<Snippet>
<References />
<Imports />
<Declarations>
<Literal Editable="true">
<ID>name</ID>
<Type></Type>
<ToolTip>What the variable name should be.</ToolTip>
<Default>message</Default>
<Function></Function>
</Literal>
<Literal Editable="true">
<ID>Vars</ID>
<Type></Type>
<ToolTip>The target variable for format.</ToolTip>
<Default>variable</Default>
<Function></Function>
</Literal>
</Declarations>
<Code Language="csharp" Kind="" Delimiter="$"><![CDATA[var $name$ = string.Format($selected$, $Vars$);$end$ ]]></Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>