एक स्ट्रिंग के पहले पांच चरित्र कैसे प्राप्त करें


133

मैंने इस प्रश्न को स्ट्रिंग के पहले चार पाने के लिए पढ़ा है । क्या C # में स्ट्रिंग से वर्णों की पहली n संख्या प्राप्त करने का कोई तरीका है?


पिछला प्रश्न char** s के बारे में पूछ रहा है और आप ** चरित्र s के बारे में पूछ रहे हैं । ये एक ही चीज नहीं हैं। 𣊾और 𣇞दो वर्ण हैं जिनका मुझे कल उपयोग करने की आवश्यकता थी जो C # में लिखे गए सॉफ़्टवेयर में विफल रहे क्योंकि मैं प्रोग्रामर को charएक वर्ण के बीच का अंतर नहीं पता था । इस जाल में मत पड़ो!
हिप्पिट्रैयल

जवाबों:


218

आप Enumerable.Take का उपयोग कर सकते हैं जैसे:

char[] array = yourStringVariable.Take(5).ToArray();

या आप String.Substring का उपयोग कर सकते हैं ।

string str = yourStringVariable.Substring(0,5);

याद रखें कि String.Substringस्ट्रिंग की लंबाई के मामले में एक अपवाद फेंक सकता है जो आवश्यक वर्णों से कम है।

यदि आप परिणाम वापस स्ट्रिंग में प्राप्त करना चाहते हैं तो आप उपयोग कर सकते हैं:

  • स्ट्रिंग कंस्ट्रक्टर और LINQ का उपयोग करना Take

    string firstFivChar = new string(yourStringVariable.Take(5).ToArray());

दृष्टिकोण के साथ प्लस हाथ से पहले लंबाई के लिए जाँच नहीं कर रहा है।

  • दूसरा तरीका String.Substringत्रुटि जाँच के साथ उपयोग करना है

पसंद:

string firstFivCharWithSubString = 
    !String.IsNullOrWhiteSpace(yourStringVariable) && yourStringVariable.Length >= 5
    ? yourStringVariable.Substring(0, 5)
    : yourStringVariable;

3
string val = नया तार (yourStringVariable.Take (6) .ToArray ()); लेकिन सबस्ट्रिंग में त्रुटि आएगी अगर आपके स्ट्रिंगरिएबल की लंबाई 5 से कम है
Moji

1
IsNullOrWhiteSpaceयहाँ गलत है 10 रिक्त के साथ एक स्ट्रिंग पर विचार करें - आपका कोड सभी वापस आ जाएगा 10. IsNullOrEmptyइसके बजाय का उपयोग करें । ( IsNullOrWhiteSpaceकिसी भी अन्य परीक्षण के साथ संयोजन करना अच्छा नहीं है ; इसके बजाय अशक्त + खाली के लिए परीक्षण करें, फिर Trimयदि वह निर्दिष्ट व्यवहार है, तो जो भी परीक्षण / संचालन आवश्यक हैं।)
टूलमेकर

1
आप String.Concat () का उपयोग करके ToArray () को कॉल सेव कर सकते हैं: जैसे: string firstFivChar = String.Concat (yourStringVariable.Take (5));
BlueFuzzyThing


38

आप सबस्ट्रिंग (int startIndex, int length) का उपयोग कर सकते हैं

string result = str.Substring(0,5);

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

क्या होगा अगर स्रोत स्ट्रिंग कम है तो पांच वर्ण? उपरोक्त विधि का उपयोग करके आपको अपवाद मिलेगा। हम यह जांचने के लिए शर्त रख सकते हैं कि यदि स्ट्रिंग में वर्णों की संख्या अधिक है तो 5 को पहले सबस्ट्रिंग के माध्यम से प्राप्त करें। नोट I ने स्रोत स्ट्रिंग को FirstFiveChar चर में सौंपा है। FirstFiveChar नहीं बदलता है यदि वर्ण कम हैं तो 5, इसलिए भाग की आवश्यकता नहीं है।

string firstFiveChar = str;
If(!String.IsNullOrWhiteSpace(yourStringVariable) && yourStringVariable.Length >= 5)
      firstFiveChar = yourStringVariable.Substring(0, 5);

29

उपयोग करते समय किसी ने उचित जांच करने का उल्लेख नहीं किया है Substring(), इसलिए मैं इस बारे में योगदान करना चाहता था।

यदि आप उपयोग नहीं करना चाहते हैं Linqऔर साथ जाना चाहते हैं Substring(), तो आपको यह सुनिश्चित करना होगा कि आपका स्ट्रिंग Substring()फ़ंक्शन के दूसरे पैरामीटर (लंबाई) से बड़ा है ।

मान लीजिए कि आपको पहले 5 पात्रों की आवश्यकता है। आप उन्हें इस तरह से उचित जांच करवाएं:

string title = "love" // 15 characters
var firstFiveChars = title.Length <= 5 ? title : title.Substring(0, 5);

// firstFiveChars: "love" (4 characters)

इस जांच के बिना, Substring()फ़ंक्शन अपवाद को फेंक देगा क्योंकि यह उन पत्रों के माध्यम से पुनरावृति करेगा जो वहां नहीं हैं।

मुझे लगता है कि आपको विचार समझ आ गया है...


जानकारी का प्यारा अतिरिक्त सा
सितंबर को Rob85

मुझे खुशी हुई की वह तुम्हें पसंद है।
इलटर

इससे मुझे बहुत मदद मिली, लेकिन क्या आप बता सकते हैं कि वास्तव में यह उस लाइन में क्या कर रहा है?
जिंबाब

मैं प्रतिस्थापन के बारे में कुछ उदाहरणों की जाँच करूँगा। यह इंडेक्स के लिए पैरामीटर लेता है। शुरुआती इंडेक्स 0. है। यदि आप किसी भी एरे के आखिरी इंडेक्स की तुलना में कुछ भी बड़ा (या उस चीज़ के लिए छोटा) लिखते हैं, तो आपको इंडेक्स अपवाद से बाहर निकल जाता है। उस चेक में, उदाहरण उस अपवाद से बचने के लिए है।
ilter

Hahhahaha! :) यह एक सवाल था जिसका मैंने जवाब दिया। क्या मुझे उस सवाल को अनुत्तरित छोड़ देना चाहिए था? :)
ilter

18

इसके साथ समस्या .Substring(,)यह है, कि आपको यह सुनिश्चित करने की आवश्यकता है कि दिए गए स्ट्रिंग में कम से कम वर्णों की लंबाई है, अन्यथा ArgumentOutOfRangeExceptionउन्हें फेंक दिया जाएगा।

समाधान 1 ('पदार्थ' का उपयोग करके):

var firstFive = stringValue != null ? 
                   stringValue.Substring(0, stringValue.Length >= 5 ? 5 : stringValue.Length) :
                   null;

उपयोग करने .Substring(का दोष यह है कि आपको दिए गए स्ट्रिंग की लंबाई की जांच करने की आवश्यकता होगी।

समाधान 2 ('ले' का उपयोग करके):

var firstFive = stringValue != null ? 
                    string.Join("", stringValue.Take(5)) : 
                    null;

Using टेक ’ का उपयोग करने से यह रोका जा सकेगा कि आपको दिए गए स्ट्रिंग की लंबाई की जांच करने की आवश्यकता है।


13

स्ट्रिंग को बहुत कम होने से रोकने के लिए PadRight फ़ंक्शन का उपयोग करें, जो आपको चाहिए उसे पकड़ो और सभी स्थानों को एक बयान में अंत से ट्रिम करें।

strSomeString = strSomeString.PadRight(50).Substring(0,50).TrimEnd();

1
यह अब तक का बेहतर उपाय है। केवल सबस्ट्रिंग का उपयोग त्रुटि का कारण बन सकता है जब स्ट्रिंग की लंबाई सबस्ट्रिंग की लंबाई से कम होती है।
असिरि दिसानायका

SQL सर्वर में उपयोग होने वाले LEFT फ़ंक्शन के लिए सबसे अच्छा विकल्प
vibs2006

11

मुझे नहीं पता कि किसी ने इसका उल्लेख क्यों किया। लेकिन यह इसे हासिल करने का सबसे छोटा और सरल तरीका है।

string str = yourString.Remove(n);

n - वर्णों की संख्या जो आपको चाहिए

उदाहरण

var zz = "7814148471";
Console.WriteLine(zz.Remove(5));
//result - 78141

3
यह आंतरिक रूप से "this.Substring (0, 5)" के समान है, इसलिए आपको यह सुनिश्चित करने की आवश्यकता है कि स्ट्रिंग की उचित लंबाई है।
पर्सजैक

ऐसे मामले में जहां आप पहले n अक्षर चाहते हैं, यह केवल तभी काम करता है जब आपको स्ट्रिंग की लंबाई पता हो। यदि लंबाई बदल सकती है, तो यह हमेशा काम नहीं करेगा। मुझे पता है कि सबसे करने के लिए शायद स्पष्ट है, लेकिन अभी किसी भी एक है जो बीतता के लिए यह उल्लेख ...
user1289451

10

पांच व्हाट्सएप वर्णों को जोड़ें फिर पहले पांच को काटें और परिणाम को ट्रिम करें। जितने स्पेस आप अपेंड करते हैं, उतने नंबर से मेल खाना चाहिए जो आप काट रहे हैं। पहले कोष्ठक को शामिल करना सुनिश्चित करें .Substring(0,X)या आप कुछ भी नहीं जोड़ेंगे।

string str = (yourStringVariable + "    ").Substring(0,5).Trim();

इस तकनीक के साथ आपको ArgumentOutOfRangeExceptionअन्य उत्तरों में उल्लिखित चिंता करने की आवश्यकता नहीं होगी ।


1
मुझे लगता है कि पोस्ट करने के लिए जा रहा था !! upvoted। (यह २०१ ९ है, स्ट्रिंग पर एक विधि क्यों नहीं हो सकती है जो १ ९ why५ में मिड $ ने किया था; जो लोग कहते हैं कि 'आपको ऐसा नहीं करना चाहिए' ठीक है आप मेरे लिए अपना कोड लिखिए ... आपको करना होगा do it ...)
FastAl


6

सी # 8.0: रेंज ऑपरेटरों में ऐसा करने के लिए बस एक नया तरीका है

Microsoft डॉक्स

या जैसा कि मैं उन्हें कॉल करना पसंद करता हूं, पंडों के स्लाइस।

पुराना तरीका:

string newString = oldstring.Substring(0, 5);

नया रास्ता:

string newString = oldstring[..5];

जो पहली नज़र में छोटे कोड के लिए कुछ पठनीयता के एक बहुत बुरे व्यापार की तरह प्रतीत होता है लेकिन नई सुविधा आपको देती है

  1. स्लाइडिंग सरणियों के लिए एक मानक वाक्यविन्यास (और इसलिए तार)
  2. इस तरह से ठंडा सामान:

    var slice1 = सूची [2 .. ^ 3]; // सूची [रेंज। क्रिएट (2, इंडेक्स। क्रेटफ्रॉमएंड (3))]

    var slice2 = सूची [.. ^ 3]; // सूची [Range.ToEnd (Index.CreateFromEnd (3))]

    var slice3 = सूची [2 ..]; // सूची [Range.FromStart (2)]

    var slice4 = सूची [..]; // सूची [रेंज। सभी]


3

C # में स्ट्रिंग से वर्णों की पहली n संख्या प्राप्त करने के लिए

String yourstring="Some Text";  
String first_n_Number_of_Characters=yourstring.Substring(0,n);

2

नीचे एक विस्तार विधि दी गई है जो यह जांचती है कि क्या एक स्ट्रिंग की आवश्यकता से अधिक बड़ा है और स्ट्रिंग को परिभाषित अधिकतम मात्रा में चार्ट और एपेंडेंस के लिए छोटा करता है '...'।

public static class StringExtensions
{
    public static string Ellipsis(this string s, int charsToDisplay)
    {
        if (!string.IsNullOrWhiteSpace(s))
            return s.Length <= charsToDisplay ? s : new string(s.Take(charsToDisplay).ToArray()) + "...";
        return String.Empty;
    }
}

2

में सी # 8.0 तुम इतनी तरह की स्ट्रिंग के पहले पांच पात्रों प्राप्त कर सकते हैं

string str = data[0..5];

यहाँ Indices और Ranges के बारे में कुछ और जानकारी दी गई है


1

मैं उपयोग करता हूं:

var firstFive = stringValue?.Substring(0, stringValue.Length >= 5 ? 5 : customAlias.Length);

या वैकल्पिक यदि आप व्हाट्सएप के लिए भी जांच करना चाहते हैं (केवल नल के बजाय):

var firstFive = !String.IsNullOrWhiteSpace(stringValue) && stringValue.Length >= 5 ? stringValue.Substring(0, 5) : stringValue

1

या आप String.ToCharArray () का उपयोग कर सकते हैं ।
यह लेता है int startindexऔर और int lengthके रूप में मानकों और रिटर्न एकchar[]

new string(stringValue.ToCharArray(0,5))

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



0

यदि हम किसी भी क्षेत्र से केवल पहले 5 वर्ण चाहते हैं, तो यह वाम गुण द्वारा प्राप्त किया जा सकता है

Vessel = f.Vessel !=null ? f.Vessel.Left(5) : ""


-3

मैंने उपरोक्त उत्तरों की कोशिश की है और मुझे लगता है कि यह सबसे अच्छा है

@item.First_Name.Substring(0,1)

इसमें मुझे स्ट्रिंग का पहला अक्षर मिल सकता है

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