我經常發現自己寫ReSharper的的String.Format快捷
var message = "Hello {0}";
,然後回去和打字
var message = string.Format("Hello {0}", world);
如果我被輸入字符串,當我把這將是很好「最後,resharper發現字符串中有一個參數,並立即用string.Format方法將字符串包圍,並將光標放在第一個參數處。
是否有直接的如何做到這一點?我使用ReSharper的6.1
我經常發現自己寫ReSharper的的String.Format快捷
var message = "Hello {0}";
,然後回去和打字
var message = string.Format("Hello {0}", world);
如果我被輸入字符串,當我把這將是很好「最後,resharper發現字符串中有一個參數,並立即用string.Format方法將字符串包圍,並將光標放在第一個參數處。
是否有直接的如何做到這一點?我使用ReSharper的6.1
在笨只需鍵入:
"Hello " + world
Alt + Enter鍵進入,做到:
string.Format("Hello {0}", world);
顯然,這也適用時整件事情要複雜得多。我知道這將去除無用呼叫.ToString()
,我懷疑它會自動擡起任何格式的表情,像
int i = 42;
"i = " + i.ToString("X2");
Alt + Enter鍵輸入
string.Format("i = {0:X2}", i);
如果你不幸/周圍的代碼包含許多觸發Resharper建議(?)的事情,那麼你可能需要使用在+
運營商
你可以直接鍵入字符串'「你好」',然後,當光標仍在引號內時,使用R#'Alt + Enter'>'Enter'來選擇Add new format item的R#選項,適當的論據'。 R#會在照顧前後的光標位置。 – 2011-12-30 02:15:56
@MetroSmurf:你能確認這是R#6.x的東西嗎?我已經看到格式化字符串的選項得到了改進,但我還沒有完全運用它們:) – sehe 2011-12-30 02:21:43
是的,這適用於R#6。我相信它也是在v6中引入的。可能是我用過的R#6中最常用的新功能(傷心,我知道:) – 2011-12-30 02:24:29
可以幾乎與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>
然後你可以加載它通過工具|代碼片段管理器|進口。
一旦片段是可用的,你可以輸入
var message = "Hello {0}"
,但你必須選擇字符串,然後按Ctrl鍵ķ按Ctrl小號並選擇片段名應用它。這將生成
var message = string.Format("Hello {0}", value);
與value
零件選擇編輯。
編輯:還有一個Snippet Designer extension,其可與片段工作更容易。
這是Matthew的visual studio代碼片段的替代方案。這段代碼要求輸入變量名稱,但默認爲可選的消息,唯一需要的是變量名稱。 HTH
的樣子:
var message = string.Format("abc {0}", variable);
爲默認(農行{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>
因爲這個,我最終爲字符串FormatWith(arg0, ar1...)
寫了一個擴展方法。然後我發現Humanizer庫做了同樣的事情。添加Humanizer NuGet軟件包,現在您可以編寫"Heres my formatted string on the {0}st try!".FormatWith(1)"
,但希望能夠少彈一下。如果您擁有ReSharper並且喜歡它可以使用參數突出顯示匹配的位置標記,請安裝Humanizer Annotations R# Extension,然後您會將它們還原。
不用鍵入'{0}',只需使用'alt + enter'並選擇'Add new format item and proper argument'的R#選項。 – 2011-12-30 02:18:28