2010-05-25 22 views
41

मैं नीचे दिए गए फ़ंक्शन के साथ पहले तीन वर्ण प्राप्त कर सकता हूं।सी # में सबस्ट्रिंग कैसे प्राप्त करें?

हालांकि, मैं पिछले पांच वर्णों (तीन) के आउटपुट को Substring() फ़ंक्शन के साथ कैसे प्राप्त कर सकता हूं। या अन्य स्ट्रिंग फ़ंक्शन का उपयोग किया जाएगा?

static void Main() 
{ 
    string input = "OneTwoThree"; 

    // Get first three characters 
    string sub = input.Substring(0, 3); 
    Console.WriteLine("Substring: {0}", sub); // Output One. 
} 

उत्तर

60

अपने इनपुट स्ट्रिंग कम से कम पांच अक्षर लंबा तो हो सकता है आप चाहिए ध्यान रखें कि string.SubstringArgumentOutOfRangeException फेंक देगा यदि startIndex तर्क नकारात्मक है।

string sub = input.Substring(Math.Max(0, input.Length - 5)); 

या अधिक स्पष्ट रूप से:

इस संभावित समस्या आप निम्नलिखित कोड का उपयोग कर सकते हल करने के लिए आप विस्तार तरीकों का उपयोग कर सकते हैं

public static string Right(string input, int length) 
{ 
    if (length >= input.Length) 
    { 
     return input; 
    } 
    else 
    { 
     return input.Substring(input.Length - length); 
    } 
} 
+0

आपका कोड अच्छी तरह से काम करता है। लेकिन मैंने पाया कि यह समझना थोड़ा मुश्किल है। एमएसडीएन से। मैंने पाया ** स्ट्रिंग :: सबस्ट्रिंग विधि ** 'स्ट्रिंग.Substring (Int32) 'और' सबस्ट्रिंग (Int32, Int32) 'शामिल है। 'सबस्ट्रिंग (मजेदार())' जैसी शैली क्यों शामिल न करें। मुझे लगता है कि आप Substring() के लिए एक तर्क के रूप में एक मजेदार() डालें। धन्यवाद। –

+2

@ नैनो HE: 'Math.Max ​​(int, int) 'पारित दो संख्याओं में से उच्चतम लौटाता है। इसलिए इस मामले में यदि' इनपुट। लम्बाई '5 वर्णों से कम है' सबस्ट्रिंग' '0' पारित किया गया है प्रभावी ढंग से आपको संपूर्ण 'इनपुट' देता है। अन्यथा आपको सही 5 वर्णों का एक सबस्ट्रिंग मिलता है। –

13
string sub = input.Substring(input.Length - 5); 
+0

के बाद अपने जल्दी जवाब के लिए धन्यवाद। :-) –

+15

मुझे समझ में नहीं आता कि लोग पहले उत्तरों के लिए स्कोर क्यों देते हैं। स्क्रोर सिस्टम का उद्देश्य एक गति प्रतियोगिता नहीं होना चाहिए, लेकिन यह दिखाने के लिए कि कौन सा जवाब सबसे अच्छा है। इस और कुछ अन्य उत्तरों में समस्या है कि स्ट्रिंग लंबाई की कोई जांच नहीं है। – PauliL

2

एक तरह से Substring के लिए इनपुट के हिस्से के रूप स्ट्रिंग के Length संपत्ति का उपयोग करने के लिए है:

string sub = input.Substring(input.Length - 5); // Retrieves the last 5 characters of input 
8

, इस पर ध्यान दिए बिना एक सुरक्षित तरीके से करना होगा

public static string Right(this string text, int maxLength) 
{ 
    if (string.IsNullOrEmpty(text) || maxLength <= 0) 
    { 
     return string.Empty; 
    } 

    if (maxLength < text.Length) 
    { 
     return text.Substring(text.Length - maxLength); 
    } 

    return text; 
} 

और यह उपयोग करने के लिए:

०१२३५१६४१० स्ट्रिंग की लंबाई की
string sub = input.Right(5); 
+2

मुझे वास्तव में नफरत है कि ऐसा नहीं है कि सबस्ट्रिंग बॉक्स से कैसे लागू किया गया है। एक स्ट्रिंग पर सबस्ट्रिंग (0, एलईएन) को कॉल करना बहुत आम है जो एलईएन से कम है, और मैं हमेशा यह पसंद करता हूं कि यह उस मामले में काम करे, न कि एक सूखा अपवाद फेंक दें। मैं गणित का उपयोग करता हूं। मेरा कामकाज, लेकिन इससे खुश नहीं हूं। –

2

यहां एक त्वरित विस्तार विधि है जिसका उपयोग आप PHP वाक्यविन्यास की नकल कर सकते हैं। विधानसभा नाम शामिल करें। कोड फ़ाइल में एक्सटेंशन, आप एक्सटेंशन का उपयोग कर रहे हैं।

फिर आप कॉल कर सकते हैं: input.SubstringReverse (-5) और यह "तीन" वापस आ जाएगा।

नाम स्थान AssemblyName.Extensions {

public static class StringExtensions 
{ 
    /// <summary> 
    /// Takes a negative integer - counts back from the end of the string. 
    /// </summary> 
    /// <param name="str"></param> 
    /// <param name="length"></param> 
    public static string SubstringReverse(this string str, int length) 
    { 
     if (length > 0) 
     { 
      throw new ArgumentOutOfRangeException("Length must be less than zero."); 
     } 

     if (str.Length < Math.Abs(length)) 
     { 
      throw new ArgumentOutOfRangeException("Length cannot be greater than the length of the string."); 
     } 

     return str.Substring((str.Length + length), Math.Abs(length)); 
    } 
} 

}

0

सरल कोड की एक पंक्ति में यह करने के लिए जिस तरह से इस

string sub = input.Substring(input.Length > 5 ? input.Length - 5 : 0); 

और यहाँ Operator ? :

-1
के बारे में कुछ जानकारियां होगा
 // Get first three characters 
     string sub = input.Substring(0, 3); 
     Console.WriteLine("Substring: {0}", sub); // Output One. 

     string sub = input.Substring(6, 5); 
     Console.WriteLine("Substring: {0}", sub); //You'll get output: Three 
+0

@TheMerovingian: क्षमा करें मुझे विरोध करना चाहिए, [SO प्रश्नों को पुनर्जीवित करने के लिए प्रोत्साहित करता है] (http://meta.stackexchange.com/questions/20524/reviving-old-questions) ([बैज के साथ] (http://stackoverflow.com/सहायता/बैज/17/necromancer)), जब तक कि उत्तर कुछ जोड़ता है, कोई समस्या नहीं है। –

0
string input = "OneTwoThree"; 
(if input.length >5) 
{ 
string str=input.substring(input.length-5,5); 
} 
+1

प्रदान किया गया कोड मदद कर सकता है, लेकिन इसे एक अच्छा उत्तर देने के लिए आपको यह भी वर्णन करना चाहिए कि क्यों/कोड आपके समस्या को हल करता है। – ZygD

+0

या ... सुनिश्चित करें .. मैं इसका ख्याल रखूंगा @ZygD। – hrk1991

0

सबस्ट्रिंग। यह विधि तार निकालती है। यह सबस्ट्रिंग के स्थान की आवश्यकता है (एक प्रारंभ सूचकांक, एक लंबाई)। फिर यह उस सीमा के पात्रों के साथ एक नई स्ट्रिंग देता है।

string input = "OneTwoThree"; 
// Get first three characters. 
string sub = input.Substring(0, 3); 
Console.WriteLine("Substring: {0}", sub); 

आउटपुट:: सबस्ट्रिंग: एक

4
static void Main() 
    { 
     string input = "OneTwoThree"; 

      //Get last 5 characters 
     string sub = input.Substring(6); 
     Console.WriteLine("Substring: {0}", sub); // Output Three. 
    } 

सबस्ट्रिंग (0, 3) रिटर्न पहले 3 वर्ण की स्ट्रिंग

एक छोटा सा उदाहरण देखें। // एक

सबस्ट्रिंग (3, 3) दूसरे 3 वर्णों के सबस्ट्रिंग देता है। // दो

सबस्ट्रिंग (6) रिटर्न सभी वर्ण की स्ट्रिंग पहले 6. // तीन

+0

'सबस्ट्रिंग (6)' पहले 6 के बाद सभी वर्णों की 'सबस्ट्रिंग 'देता है। यह मेरे लिए उपयोगी था। धन्यवाद। – GntS

संबंधित मुद्दे