2011-12-29 13 views
5

मैं अक्सर अपने आप कोResharper String.Format शॉर्टकट

var message = "Hello {0}"; 

लेखन और फिर

var message = string.Format("Hello {0}", world); 

में वापस जा रहा है और टाइपिंग यह अच्छा होगा अगर के रूप में मैं, स्ट्रिंग टाइपिंग थे जब मैं डाल पाते हैं "अंत में, पुनर्विक्रेता ने पता लगाया कि स्ट्रिंग में एक पैरामीटर था और तुरंत स्ट्रिंग के साथ स्ट्रिंग को घेर लिया। फॉरमेट विधि और कर्सर को पहले तर्क पर डाल दिया।

क्या कोई सीधा है ऐसा करने का तरीका? मैं Resharper 6.1 का उपयोग कर रहा

+0

'{0}' टाइप करने के बजाय, बस 'alt + enter' का उपयोग करें और' नया प्रारूप आइटम और उचित तर्क जोड़ें 'का R # विकल्प चुनें। –

उत्तर

16

बस बेवकूफी में यह टाइप करें:

"Hello " + world 

Alt +दर्ज दर्ज किया :

string.Format("Hello {0}", world); 

जाहिर है, यह भी जब काम करता है पूरी बात बहुत जटिल है। मैं जानता हूँ कि यह .ToString() को बेकार कॉल पट्टी होगी, और मैं यह स्वचालित रूप से की तरह

int i = 42; 
"i = " + i.ToString("X2"); 

Alt किसी भी प्रारूप भाव उठा, +दर्ज होगा दर्ज संदेह

string.Format("i = {0:X2}", i); 

यदि आप दुर्भाग्यपूर्ण हैं/आस-पास के कोड में कई चीजें हैं जो Resharper सुझावों को ट्रिगर करती हैं (?) आप को हो सकता है + ऑपरेटरों

+2

आप स्ट्रिंग '" हैलो "टाइप कर सकते हैं और फिर, जबकि कर्सर अभी भी उद्धरण के अंदर है, R #' Alt + Enter'> 'Enter' का उपयोग करें जो' नया प्रारूप आइटम 'के R # विकल्प का चयन करेगा और उचित तर्क '। आर # पहले और बाद में कर्सर प्लेसमेंट का ख्याल रखेगा। –

+0

@MetroSmurf: क्या आप पुष्टि कर सकते हैं कि आर # 6.x सामान है? मैंने प्रारूप स्ट्रिंग के साथ विकल्पों को देखा है, लेकिन मैंने अभी तक उन सभी का उपयोग नहीं किया है :) – sehe

+0

हाँ, यह आर # 6 के साथ काम करता है। मेरा मानना ​​है कि यह v6 में भी पेश किया गया था। संभवत: सबसे अधिक उपयोग की जाने वाली नई सुविधा मैंने आर # 6 (उदास, मुझे पता है :) –

1

आप लगभग यह एक दृश्य स्टूडियो स्निपेट के साथ क्या कर सकते हैं में से एक पर कर्सर की स्थिति (अर्थात 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 भी है जो स्निपेट के साथ काम करना आसान बनाता है।

1

यहां मैथ्यू के विजुअल स्टूडियो कोड स्निपेट का एक विकल्प है। यह स्निपेट वैरिएबल नाम के लिए पूछता है लेकिन संदेश के लिए डिफ़ॉल्ट जो वैकल्पिक है, केवल एक ही चीज है जो परिवर्तनीय नाम है। 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> 
3

बेशर्म प्लग

मैं भी करने के लिए कोशिश की है स्ट्रिंग प्रारूप निर्माण को आसान बनाने के लिए एक दृष्टिकोण तैयार करें, और मैं जो आया उसके साथ स्ट्रिंग स्प्लिसिंग है एक-la पीएचपी:

enter image description here

यह एक ReSharper प्लग में आप here पा सकते हैं कि का हिस्सा है।

2

इस वजह से मैंने FormatWith(arg0, ar1...) नामक तारों के लिए एक विस्तार विधि लिखना समाप्त कर दिया। तब मैंने पाया कि Humanizer लाइब्रेरी ने वही सटीक चीज किया था। ह्यूमाइज़र NuGet पैकेज जोड़ें और अब आप "Heres my formatted string on the {0}st try!".FormatWith(1)" लिखने में सक्षम होंगे, उम्मीद है कि आस-पास कम उछाल आएगा। यदि आपके पास रीशेपर है और यह पैरामीटर के साथ मिलान करने वाले प्लेमार्कर्स को हाइलाइट करता है, तो Humanizer Annotations R# Extension इंस्टॉल करें और आप उन्हें वापस ले लेंगे।