स्ट्रिंग से पहले 10 अक्षरों को कैसे निकालें?


93

एक स्ट्रिंग के पहले 10 अक्षरों को कैसे अनदेखा करें?

इनपुट:

str = "hello world!";

आउटपुट:

d!

9
string.Substring (9); जहां 9 को इंडेक्स शुरू किया गया है
वकास

याद रखें कि पहले जांच लें कि स्ट्रिंग में कम से कम 10 वर्ण हैं या आपको एक अपवाद मिलेगा।
जोनाथन

सबस्ट्रिंग समर्थन क्यों नहीं करता है (startIndex, endindex)? हर बार हमें लंबाई की गणना करनी होगी ..:
संग्राम नंदखिले

1
@Waqas: वास्तव में यह के str.Substring (10), पैरामीटर स्थिति में किया जा रहा है जहाँ से सबस्ट्रिंग शुरू होता निकाले जाने की
राज़्वान फ्लेवियस पांडा

जवाबों:


94
str = "hello world!";
str.Substring(10, str.Length-10)

आपको लंबाई जांच करने की आवश्यकता होगी अन्यथा यह एक त्रुटि फेंक देगा


215

str = str.Remove(0,10); पहले 10 वर्णों को निकालता है

या

str = str.Substring(10); स्ट्रिंग के अंत में 11 वें वर्ण पर शुरू होने वाला एक सबस्ट्रिंग बनाता है।

आपके उद्देश्यों के लिए उन्हें पहचान के साथ काम करना चाहिए।


16

सब्स्ट्रीमिंग शायद वही है जो आप चाहते हैं, जैसा कि दूसरों ने बताया। लेकिन सिर्फ मिश्रण में एक और विकल्प जोड़ने के लिए ...

string result = string.Join(string.Empty, str.Skip(10));

तुम भी इस पर लंबाई की जांच करने की जरूरत नहीं है! :) यदि इसकी 10 चार्ट से कम है, तो आपको एक खाली स्ट्रिंग मिलती है।


और बेहतर पठनीयता के लिए, आप "" का उपयोग कर सकते हैं। यह इन दिनों स्ट्रिंग के समान ही संकलित करता है।
PRMan

यह नहीं करता है, "" एक नया स्ट्रिंग बनाता है, जबकि स्ट्रिंग। एक संदर्भ को खाली करें। यह वास्तव में प्रदर्शन के मामले में मायने नहीं रखता है (मेरा मतलब है कि यह एक खाली स्ट्रिंग है तो हाँ ...), लेकिन सिर्फ उस बिंदु को इंगित करना चाहता था :)
Ler0

11

Substring दो अधिभार विधियाँ हैं:

public string Substring(int startIndex);//The substring starts at a specified character position and continues to the end of the string.

public string Substring(int startIndex, int length);//The substring starts at a specified character position and taking length no of character from the startIndex.

तो इस परिदृश्य के लिए, आप नीचे दिए गए पहले तरीके का उपयोग कर सकते हैं:

var str = "hello world!";
str = str.Substring(10);

यहाँ उत्पादन है:

d!

यदि आप इसकी लंबाई की जाँच करके रक्षात्मक कोडिंग लागू कर सकते हैं।


6

Substringएक पैरामीटर STARTINDEX कहा जाता है। इसे उस इंडेक्स के अनुसार सेट करें जिसे आप शुरू करना चाहते हैं।


3

आप नीचे लाइन का उपयोग करके चार को हटा सकते हैं,

: - पहला चेक जो स्ट्रिंग को हटाने के लिए पर्याप्त चार है , जैसे

   string temp="Hello Stack overflow";
   if(temp.Length>10)
   {
    string textIWant = temp.Remove(0, 10);
   }


1

आप विधि का उपयोग कर सकते हैं -स्ट्रिंग विधि है कि एक एकल पैरामीटर, जो सूचकांक से शुरू करने के लिए है लेता है।

नीचे दिए गए मेरे कोड में केस से निपटने के लिए लंबाई आपके वांछित स्टार्ट इंडेक्स से कम है और जब लंबाई शून्य है।

string s = "hello world!";
s = s.Substring(Math.Max(0, Math.Min(10, s.Length - 1)));

वर्तमान में यह स्ट्रिंग से अंतिम वर्ण लौटाता है यदि स्ट्रिंग कम है जो 10 वर्ण लंबा है।
रेज़वान फ्लावियस पांडा

1

के लिये:

var str = "hello world!";

पहले 10 वर्णों के बिना परिणामी स्ट्रिंग प्राप्त करने के लिए और यदि स्ट्रिंग 10 से कम या बराबर है तो आप इसका उपयोग कर सकते हैं:

var result = str.Length <= 10 ? "" : str.Substring(10);

या

var result = str.Length <= 10 ? "" : str.Remove(0, 10);

पहला संस्करण पसंद किया जा रहा है क्योंकि इसमें केवल एक विधि पैरामीटर की आवश्यकता होती है।


1

लंबाई को Substringविधि में निर्दिष्ट करने की आवश्यकता नहीं है । इसलिए:

string s = hello world;
string p = s.Substring(3);

p होगा:

"लो दुनिया"।

एकमात्र अपवाद जिसे आपको पूरा करने की आवश्यकता है, ArgumentOutOfRangeExceptionयदि startIndexयह शून्य से कम है या इस उदाहरण की लंबाई से अधिक है।


0

C # 8 से शुरू होकर, आप बस रेंज ऑपरेटर का उपयोग कर सकते हैं। यह ऐसे मामलों को संभालने का अधिक कुशल और बेहतर तरीका है।

string AnString = "Hello World!";
AnString = AnString[10..];

C# 8लक्षित करते समय समर्थित नहीं है .NET Framework
l33t

0

कॉलिंग SubString()एक नई स्ट्रिंग आवंटित करती है। इष्टतम प्रदर्शन के लिए, आपको उस अतिरिक्त आवंटन से बचना चाहिए। C# 7.2आप के साथ शुरू करके स्पैन पैटर्न का लाभ उठा सकते हैं ।

लक्ष्यीकरण करते समय .NET Framework, System.Memory NuGet पैकेज को शामिल करें । के लिए .NET Coreपरियोजनाओं इस बॉक्स से बाहर काम करता है।

static void Main(string[] args)
{
    var str = "hello world!";
    var span = str.AsSpan(10); // No allocation!

    // Outputs: d!
    foreach (var c in span)
    {
        Console.Write(c);
    }

    Console.WriteLine();
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.