2011-04-18 11 views
28

मैं msrtResult है, जो काफी लंबा है के रूप में निम्न स्ट्रिंग बिल्डर हो रहा से एक चरित्र हटाना:मेरी stringbuilder

mstrResult.Append(rtbResult.Text).Append("})})" + Environment.NewLine) 

मैं कैसे अब mstrResult से पिछले "," निकाल सकते हैं? (यह उस mstrResult के बीच में है और यह पूरे स्ट्रिंग का अंतिम किरदार नहीं है क्योंकि मैं इसे स्ट्रिंग जोड़ रहा हूं) मुझे नई लाइन जोड़ने से पहले इसे करना चाहिए। धन्यवाद

+1

मैं आपके प्रश्न को पूरी तरह से समझ नहीं सकता। क्या आप इसे थोड़ा और विस्तार से बता सकते हैं? –

+0

मैं भी, आपके प्रश्न/लक्ष्य को पूरी तरह से समझ नहीं पा रहा हूं। उस कॉमा को स्ट्रिंगबिल्डर में कहां रखा गया है? यदि यह 'rtbResult.Text' में निहित है तो आप इसे वहां बदलने पर विचार कर सकते हैं। –

उत्तर

3

यदि आप उस चरित्र (ओं) की स्थिति को जानते हैं तो आप StringBuilder.Remove() का उपयोग कर सकते हैं।

मुझे लगता है कि इसे पहले स्थान पर जोड़ना आसान नहीं होगा।


आपका अद्यतन प्रश्न अंतिम अल्पविराम चरित्र को हटाने के बारे में बात करता है।

मेरी शॉपिंग सूची निहित दूध, अंडे, मक्खन, और मछली: मैं तुम्हें यह करने के लिए संदेश है कि इस तरह दिखता है बनाने से बचना चाहते हैं अनुमान लगा रहा हूँ।

आप इसे एक लूप में इकट्ठा करेंगे, जो एक सरणी पर फिर से चल रहा है। आम तौर पर आप लूप लिख सकते हैं ताकि जब आप लूप के अंतिम पुनरावृत्ति में हों तो आदेश को जोड़ने के लिए आप बस (उदा। एक कथन के साथ) चुनें।

+0

मुझे स्थिति को अस्वस्थ रूप से नहीं पता है और मैं ऐसा नहीं कर सकता क्योंकि मैं एक पुनरावृत्ति में हूं और मुझे बस "," –

+2

के अंतिम चरित्र को हटाने की आवश्यकता है यदि आपने अंत में शुरुआत में शुरुआत में जोड़ा है, तो आप पता चलेगा कि यह पहला ऐसा था जिसे हटाने की जरूरत है ...और फिर आप निकालें का उपयोग कर सकते हैं? – spacemonkeys

+0

लंबे समय तक ऑक्सफोर्ड कॉमा रहते हैं! – goodeye

1

प्रयास करें

mstrResult.Remove(mstrResult.Length - 1 - Environment.NewLine.Length 
       , Environment.NewLine.Length); 
60

तुम सिर्फ स्ट्रिंग छोटा करने के लिए लंबाई कम कर सकते हैं (सी #):

mstrResult.Length -= 1; 

संपादित करें:

के बाद आप आप सवाल अद्यतन, मुझे लगता है कि मुझे पता है कि आप चाहते हैं :) इस बारे में कैसे:

mstrResult.Append(rtbResult.Text).Append("})})" + Environment.NewLine); 
var index = mstrResult.ToString().LastIndexOf(','); 
if (index >= 0) 
    mstrResult.Remove(index, 1); 
+1

+1 मुझे नहीं लगता था कि यह आपको ऐसा करने देगा, लेकिन एमएसडीएन की जांच की और हाँ यह अच्छा लग रहा है। मुझे पसंद है। –

+0

यह देखने के लिए एक बात यह है कि आपने पहले स्थान पर एक कमांड जोड़ा है और यह कोड स्ट्रिंग के कारण विफल नहीं होता है, जो किसी भी कॉमा नहीं है, या टेक्स्ट के पहले हिस्से से कॉमा को हटाकर विफल रहता है। –

+0

@ डेविड आप सही हैं। यह सत्यापित करने के लिए एक चेक जोड़ा गया कि वास्तव में एक अल्पविराम मौजूद है। मुझे यकीन नहीं था कि @Faulty mstrResult के rtbResult से अल्पविराम को हटाना चाहता था, लेकिन यह बदलना तुच्छ होगा। –

13

एक स्ट्रिंगबिल्डर एक्सटेंशन जोड़ें।

public static StringBuilder RemoveLast(this StringBuilder sb, string value) 
{ 
    if(sb.Length < 1) return sb; 
    sb.Remove(sb.ToString().LastIndexOf(value), value.Length); 
    return sb; 
} 

तो आह्वान:

yourStringBuilder.RemoveLast(","); 
-2

उपयोग:

stringbuilder blahh = new stringbuilder() 
int searchKey = blahh.LastIndexOf(','); 

तो फोन

blahh.Remove(searchKey, 1).Insert(searchKey, " and"); or a blank. 
0

अभी पिछले चरित्र आप नीचे दिए गए उपयोग संलग्न निकालने के लिए: (यह वीबी है लेकिन सी को समान रूप से काम करना चाहिए)

Dim c As New StringBuilder 
c.Remove(c.Length - 1, 1) 
संबंधित मुद्दे