दिलचस्प पोस्ट
सी में नियमित अभिव्यक्ति: उदाहरण? पृष्ठभूमि छवि डेटा को सीएसएस में Base64 अच्छा या बुरा अभ्यास के रूप में एम्बेड करना है? जावास्क्रिप्ट खींचें और स्पर्श उपकरणों के लिए ड्रॉप vba: सरणी से अद्वितीय मान प्राप्त करें कैसे Android में टोस्ट की स्थिति को बदलने के लिए? पायथन के उपयोग से एक सीक्लिटे 3 डेटाबेस तालिका में सीएसवी फ़ाइल आयात करना पायथन में सिंगलटन बनाना Maven त्रुटि "हस्तांतरण में विफलता …" क्या JTextField में केवल संख्यात्मक मान स्वीकार करने का कोई तरीका है? सी ++ में आप किस प्रकार की एन्यूम का उपयोग कर रहे हैं? स्निपिंग टूल के नेट इक्वलेंट Linq to Entities का उपयोग कर '(') शामिल होता है? UIView और initWithFrame और एक एनआईबी फ़ाइल। मैं एनआईबी फ़ाइल लोड कैसे कर सकता हूं? PHP पृष्ठभूमि प्रक्रियाएं निष्पादन समय पर केवल एक प्रकार तर्क के साथ सामान्य विधि कॉलिंग

कैसे सी में एक सरणी से एक तत्व को हटाने के लिए

चलो कहना है कि मेरे पास यह सरणी है,

int[] numbers = {1, 3, 4, 9, 2}; 

मैं "नाम" से एक तत्व कैसे हटा सकता हूं? , नंबर 4 कह देता है?

यहां तक ​​कि ArrayList को हटाने में मदद नहीं मिली?

 string strNumbers = " 1, 3, 4, 9, 2"; ArrayList numbers = new ArrayList(strNumbers.Split(new char[] { ',' })); numbers.RemoveAt(numbers.IndexOf(4)); foreach (var n in numbers) { Response.Write(n); } 

वेब के समाधान से एकत्रित समाधान "कैसे सी में एक सरणी से एक तत्व को हटाने के लिए"

यदि आप सूचकांक जानने के बिना 4 के सभी उदाहरणों को हटाना चाहते हैं:

LINQ: (.NET Framework 3.5)

 int[] numbers = { 1, 3, 4, 9, 2 }; int numToRemove = 4; numbers = numbers.Where(val => val != numToRemove).ToArray(); 

गैर- LINQ: (.NET Framework 2.0)

 static bool isNotFour(int n) { return n != 4; } int[] numbers = { 1, 3, 4, 9, 2 }; numbers = Array.FindAll(numbers, isNotFour).ToArray(); 

यदि आप सिर्फ पहला उदाहरण निकालना चाहते हैं:

LINQ: (.NET Framework 3.5)

 int[] numbers = { 1, 3, 4, 9, 2, 4 }; int numToRemove = 4; int numIndex = Array.IndexOf(numbers, numToRemove); numbers = numbers.Where((val, idx) => idx != numIndex).ToArray(); 

गैर- LINQ: (.NET Framework 2.0)

 int[] numbers = { 1, 3, 4, 9, 2, 4 }; int numToRemove = 4; int numIdx = Array.IndexOf(numbers, numToRemove); List<int> tmp = new List<int>(numbers); tmp.RemoveAt(numIdx); numbers = tmp.ToArray(); 

संपादित करें: सिर्फ अगर आपने इसे पहले से ही नहीं लगाया है, जैसा कि माल्फ़िस्ट ने बताया है, आपको LINQ कोड उदाहरणों के काम के लिए .NET Framework 3.5 को लक्षित करने की आवश्यकता है। यदि आप 2.0 को लक्षित कर रहे हैं तो आपको गैर- LINQ उदाहरणों को संदर्भित करने की आवश्यकता है।

 int[] numbers = { 1, 3, 4, 9, 2 }; numbers = numbers.Except(new int[]{4}).ToArray(); 

आप अपने सरणी को एक सूची में कनवर्ट कर सकते हैं और सूची में कॉल निकालें। फिर आप अपने सरणी में वापस कन्वर्ट कर सकते हैं।

 int[] numbers = {1, 3, 4, 9, 2}; var numbersList = numbers.ToList(); numbersList.Remove(4); 

प्रश्न में लिखे गए कोड में एक बग है

आपकी सरणी सूची में "1" "3" "4" "9" और "2" (रिक्त स्थान नोट) के तार होते हैं

तो इंडेक्सऑफ़ (4) कुछ भी नहीं मिलेगा क्योंकि 4 एक इंट है, और यहां तक ​​कि "tostring" इसे "4" और "4" में परिवर्तित नहीं करता है, और कुछ भी नहीं हटाया जाएगा।

एक सरणी सूची यह है कि आप क्या करना चाहते हैं, जाने के लिए सही तरीका है।

बालाबास्टर का उत्तर सही है यदि आप तत्व के सभी उदाहरणों को निकालना चाहते हैं। यदि आप केवल पहले ही निकालना चाहते हैं, तो आप ऐसा कुछ करेंगे:

 int[] numbers = { 1, 3, 4, 9, 2, 4 }; int numToRemove = 4; int firstFoundIndex = Array.IndexOf(numbers, numToRemove); if (numbers >= 0) { numbers = numbers.Take(firstFoundIndex).Concat(numbers.Skip(firstFoundIndex + 1)).ToArray(); } 

एक सरणी से खुद को हटाना आसान नहीं है, क्योंकि फिर आपको आकार बदलने से निपटना होगा। यह एक List<int> बजाय कुछ का उपयोग करने के महान लाभों में से एक है यह 2.0 में Remove / Remove RemoveAt प्रदान करता है, और 3.0 के लिए बहुत सारे LINQ एक्सटेंशन।

यदि आप कर सकते हैं, तो List<> या इसी तरह का उपयोग करने के लिए रिफ़ाक्टर

मैंने अपना समाधान यहां पोस्ट किया

यह एक सरणी तत्व को किसी अन्य सरणी को प्रतिलिपि किए बिना हटाने का एक तरीका है – बस एक ही सरणी उदाहरण के फ्रेम में:

  public static void RemoveAt<T>(ref T[] arr, int index) { for (int a = index; a < arr.Length - 1; a++) { // moving elements downwards, to fill the gap at [index] arr[a] = arr[a + 1]; } // finally, let's decrement Array's size by one Array.Resize(ref arr, arr.Length - 1); } 

सामान्य एक्सटेंशन के रूप में, 2.0-संगत:

 using System.Collections.Generic; public static class Extensions { //========================================================================= // Removes all instances of [itemToRemove] from array [original] // Returns the new array, without modifying [original] directly // .Net2.0-compatible public static T[] RemoveFromArray<T> (this T[] original, T itemToRemove) { int numIdx = System.Array.IndexOf(original, itemToRemove); if (numIdx == -1) return original; List<T> tmp = new List<T>(original); tmp.RemoveAt(numIdx); return tmp.ToArray(); } } 

उपयोग:

 int[] numbers = {1, 3, 4, 9, 2}; numbers = numbers.RemoveFromArray(4); 

' कुंजी मानों के आधार पर स्ट्रिंग से आइटम को निकालने के लिए 'VB.net कोड

  Dim stringArr As String() = "file1,file2,file3,file4,file5,file6".Split(","c) Dim test As Dictionary(Of String, String) = New Dictionary(Of String, String) test.Add("file3", "description") test.Add("file5", "description") stringArr = stringArr.Except(test.Keys).ToArray()