2009-09-26 12 views
14

मैं एक पृष्ठ बना रहा हूं और एक स्ट्रिंग से सबस्ट्रिंग निकालने के बारे में जानना चाहता हूं जब तक कि एएसपीनेट सी # में कॉमा नहीं मिल जाता। क्या कोई मदद कर सकता है?एक स्ट्रिंग से सबस्ट्रिंग निकालने के लिए कैसे करें एक अल्पविराम सी # asp.net

धन्यवाद,

अलीना

उत्तर

7
myString = myString.Substring(0,myString.IndexOf(',')); 
+1

यह myString.IndexOf नहीं होना चाहिए? – dove

+0

ओह! हाँ धन्यवाद! :-) –

+0

यदि स्ट्रिंग में कोई अल्पविराम नहीं है तो यह एक ArgumentOutOfRange अपवाद भी फेंक देगा। –

3
string NoComma = ""; 
string example = "text before first comma, more stuff and another comma, there"; 
string result = example.IndexOf(',') == 0 ? NoComma : example.Split(',')[0]; 
+0

क्यों न केवल उदाहरण का उपयोग करें। स्प्लिट (',') [0] स्वयं ही? – thecoop

+0

@thecoop यह होगा अगर आप इस पर नियंत्रण चाहते थे कि परिणाम में कोई अल्पविराम नहीं था, तो इस पर सवाल स्पष्ट नहीं था। आश्चर्यजनक है कि आप आवश्यकताओं के सबसे तुच्छ पर कितना भिन्नता प्राप्त कर सकते हैं ... – dove

+0

धन्यवाद, मैं एकाधिक अल्पविरामों के साथ कैसे कर सकता हूं? मैं अल्पविरामों के बीच सभी शब्दों को सहेजना चाहता हूं। एलीना – alina

36
substring = str.Split(',')[0]; 

str किसी भी अल्पविराम नहीं करता है, स्ट्रिंग str के रूप में ही किया जाएगा।

संपादित करें: अधिकांश चीजों के साथ, इसका प्रदर्शन किनारे के मामलों के लिए अलग-अलग होगा। यदि बहुत सारे और बहुत से कॉमा हैं, तो यह ढेर पर बहुत सारे स्ट्रिंग उदाहरण बनाएगा जिनका उपयोग नहीं किया जाएगा। यदि यह शुरुआत के करीब कॉमा के साथ 5000 वर्ण स्ट्रिंग है, तो इंडेक्सऑफ + सबस्ट्रिंग विधि बहुत बेहतर प्रदर्शन करेगी। हालांकि, उचित रूप से छोटे तारों के लिए यह विधि ठीक काम करेगी।

+2

हां, कुंजी को कुछ भी जांचने की आवश्यकता नहीं है। –

+0

मुझे भी +1। अच्छा समाधान –

+2

ध्यान दें कि यह बड़े तारों के लिए अविश्वसनीय रूप से अक्षम है जिसमें उनकी शुरुआत के पास अल्पविराम शामिल है। 'स्ट्रिंग.इंडेक्स ओएफ' पहली कॉमा पाता है जब रुक जाएगा। 'स्ट्रिंग। स्प्लिट 'हमेशा _entire_ स्ट्रिंग के माध्यम से जाएगा। "नमस्कार, दुनिया पर विचार करें! मुझे आपको बताने के लिए एक बहुत लंबी कहानी है।" + [6000 और वर्ण] + "आशा है कि आपने इसका आनंद लिया!"। यह आपके पास एक बड़ा मंदी कारक है। – Joren

8

आप अल्पविराम कहां से पता लगाने के लिए इंडेक्सऑफ() का उपयोग कर सकते हैं, और फिर सबस्ट्रिंग निकालें। यदि आप सुनिश्चित हैं कि यह हमेशा अल्पविराम होगा, तो आप चेक छोड़ सकते हैं।

 string a = "asdkjafjksdlfm,dsklfmdkslfmdkslmfksd"; 
     int comma = a.IndexOf(','); 
     string b = a; 
     if (comma != -1) 
     { 
      b = a.Substring(0, comma); 
     } 
     Console.WriteLine(b); 
4

एलीना, जो आपने ऊपर लिखा है उसके आधार पर, स्प्लिट आपके लिए काम करेगा।

string[] a = comment.Split(','); 

अपने उदाहरण स्ट्रिंग, यह देखते हुए तो एक [0] = "aaa", एक [1] = "bbbbb", एक [2] = "cccc", और एक [3] = "dddd"

+0

हाय इयान, धन्यवाद, इससे मेरी मदद की :) – alina

10
var firstPart = str.Split(new [] { ',' }, 2)[0] 

दूसरा पैरामीटर अधिकतम हिस्सों को बताता है। 2 निर्दिष्ट करना सुनिश्चित करता है कि प्रदर्शन बहुत अच्छा है और यहां तक ​​कि बहुत सारे कॉमा हैं।

+1

अच्छा जवाब लेकिन प्रारूप सही नहीं है (कम से कम .NET 4.0 में)। .Split इस मामले में एक चार सरणी की आवश्यकता है। यानी 'var firstPart = str.Split (नया char [] {' {'}, 2); ' – Grax

+0

@Grax धन्यवाद, मैंने इसे ठीक कर दिया है। एफवाईआई, आपको 'char' की आवश्यकता नहीं है, कंपाइलर आपके लिए सरणी प्रकार का अनुमान लगाएगा। –

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