एक स्ट्रिंग से अंतिम तीन वर्ण निकालें


122

मैं एक स्ट्रिंग से अंतिम तीन वर्ण निकालना चाहता हूं:

string myString = "abcdxxx"; 

ध्यान दें कि स्ट्रिंग गतिशील डेटा है।


1
अंतिम 3 वर्ण = एक बात पढ़ें, अंतिम 3 वर्ण = एक और निकालें। कौन कौन से?
किरेन जॉनस्टोन

जवाबों:


234

स्ट्रिंग से अंतिम 3 वर्ण पढ़ें [प्रारंभ में पूछे गए प्रश्न]

आप string.Substring का उपयोग कर सकते हैं और इसे शुरुआती इंडेक्स दे सकते हैं और इसे दिए गए इंडेक्स से शुरू होने वाले सबरिंग को अंत तक मिलेगा।

myString.Substring(myString.Length-3)

इस उदाहरण से एक विकल्प को पुनः प्राप्त करता है। स्थानापन्न एक निर्दिष्ट वर्ण स्थिति में शुरू होता है। MSDN

अद्यतन पोस्ट के लिए संपादित करें

स्ट्रिंग से अंतिम 3 वर्ण निकालें [अद्यतित प्रश्न]

स्ट्रिंग से अंतिम तीन वर्णों को निकालने के लिए आप string.Substring (Int32, Int32) का उपयोग कर सकते हैं और इसे आरंभिक इंडेक्स 0और अंत इंडेक्स स्ट्रिंग लंबाई से तीन कम दे सकते हैं । इसे अंतिम तीन वर्णों से पहले प्रतिस्थापन मिलेगा।

myString = myString.Substring(0, myString.Length-3);

स्ट्रिंग.सब्स्ट्रिंग विधि (Int32, Int32)

इस उदाहरण से एक विकल्प को पुनः प्राप्त करता है। प्रतिस्थापन एक निर्दिष्ट वर्ण स्थिति पर शुरू होता है और एक निर्दिष्ट लंबाई होती है।

आप स्टार्टिंग इंडेक्स (Int32) पद्धति का उपयोग करके अंतिम तीन वर्णों को लंबाई के रूप में इंडेक्स पास करके निकाल सकते हैं - 3 , यह इस बिंदु से स्ट्रिंग के अंत तक हटा देगा।

myString = myString.Remove(myString.Length-3)

स्ट्रिंग। कब्र विधि (Int32)

एक नया स्ट्रिंग लौटाता है जिसमें मौजूदा उदाहरण में सभी वर्ण, एक निर्दिष्ट स्थान पर शुरू होता है और अंतिम स्थिति के माध्यम से जारी रहता है, हटा दिया गया है


13
यह उत्तर नहीं है
ब्रेक

21
धन्यवाद @braks, शुरू में पूछा गया सवाल "स्ट्रिंग से पिछले 3 वर्णों को पढ़ा गया था" यह बाद में संपादित किया गया है और मुझे नहीं पता था, प्रश्न को संपादित इतिहास देखें। आपकी टिप्पणी से मुझे अपना उत्तर सही करने में मदद मिली, जो प्रश्न के संपादन के बाद गलत हो गया।
आदिल


13

मैं इन सभी के माध्यम से पढ़ा, लेकिन कुछ और अधिक सुंदर चाहता था। किसी स्ट्रिंग के अंत से निश्चित संख्या में वर्ण हटाने के लिए:

string.Concat("hello".Reverse().Skip(3).Reverse());

उत्पादन:

"he"

7
यह काफी "रचनात्मक" है, क्योंकि इसे स्ट्रिंग की लंबाई की आवश्यकता नहीं है, लेकिन रिवर्स ऑपरेशन शायद अधिक महंगा है।
अलेक्जेंडर

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

@MattGregory स्ट्रिंग अपरिवर्तनीय हैं: निकालें, प्रतिस्थापित करें, कोई भी स्ट्रिंग फ़ंक्शन एक नया स्ट्रिंग उत्पन्न करता है। मूल सूचक को ओवरराइट करने से हमेशा कचरा संग्रह होता है। यह अभी भी धीमा है, क्योंकि Enumerable.Reverseस्ट्रिंग को char[]बफ़र्स में, फिर बफ़र्स को नए में char[]3 छोटे, और फिर एक नया string(आंतरिक रूप से दूसरे के साथ char[]) उत्पन्न करता है । एक बेहतर तरीका होगा new string("hello".Reverse().Skip(3)), या सिर्फ अपने स्वयं के स्ट्रिंग एक्सटेंशन फ़ंक्शन को लिखना AllBut(this string in, int i)जो सबस्ट्रिंग का उपयोग करता है।
वोल्फज़ून

@MattGregory यह एक स्ट्रिंग के पात्रों को "गिनना" भी नहीं है, एक स्ट्रिंग का Lengthसंग्रहित है।
वोल्फज़ून

1
अब हमारे पास भी है .SkipLast(n)। कुछ भी उलटने की जरूरत नहीं। "hello".SkipLast(3)देता है"he"
AjitZero




4

संभवत: ठीक वैसा नहीं है जैसा आप कह रहे हैं कि यह "डायनामिक डेटा" है, लेकिन आपके उदाहरण को देखते हुए, यह भी काम करता है:

? "abcdxxx".TrimEnd('x');
"abc"



2
   string myString = "abcdxxx";
   if (myString.Length<3)
      return;
   string newString=myString.Remove(myString.Length - 3, 3);

1

एक स्ट्रिंग से अंतिम वर्ण निकालें

TXTB_DateofReiumbursement.Text = (gvFinance.SelectedRow.FindControl("lblDate_of_Reimbursement") as Label).Text.Remove(10)

.Text.Remove(10)// इंडेक्स 10 से अंत तक शुरू होने वाले टेक्स्ट को हटाने के लिए उपयोग किया जाता है


1

नया C # 8.0 रेंज ऑपरेटर इसे प्राप्त करने के लिए एक शानदार शॉर्टकट हो सकता है।

उदाहरण:

var shortenedString = myString[0..^1]

0
items.Remove(items.Length - 3)

string.Remove()उस इंडेक्स से अंत तक सभी आइटम निकालता है। items.length - 3अंत से सूचकांक 3 वर्ण प्राप्त करता है


0

आसान। text = text.remove(text.length - 3)। मैंने 3 घटाया क्योंकि Removeफ़ंक्शन उस इंडेक्स से सभी आइटम को स्ट्रिंग के अंत तक हटा देता है जो है text.length। इसलिए अगर मैं 3 घटाता हूं तो मुझे 3 अक्षर मिलते हैं जो उसमें से हटाए जाते हैं।

आप इसे aस्ट्रिंग के अंत से वर्ण हटाने के लिए इसे सामान्य कर सकते हैं , जैसे:

text = text.remove(text.length - a) 

तो मैंने जो किया वही तर्क था। removeसमारोह स्ट्रिंग जो पाठ की लंबाई है के अंत करने के लिए अपने अंदर से सभी आइटम को हटा। तो अगर मैं aस्ट्रिंग की लंबाई से घटाता हूं जो मुझे aहटाए गए पात्रों के साथ स्ट्रिंग देगा ।

तो यह सिर्फ 3 के लिए काम नहीं करता है, यह सभी सकारात्मक पूर्णांकों के लिए काम करता है, सिवाय इसके कि अगर स्ट्रिंग की लंबाई कम है या इसके बराबर है a, तो उस स्थिति में यह एक नकारात्मक संख्या या 0 लौटाएगा।

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