حذف عنصر
جزء من قسم Logic & Flow في رحلة C# على Coddy — الدرس 58 من 66.
تقوم الطريقة Remove(element) بإزالة العنصر المحدد من الـ HashSet، إذا كان موجوداً. تعيد هذه الطريقة true إذا تمت إزالة العنصر بنجاح، و false إذا لم يتم العثور على العنصر في المجموعة.
قم بإنشاء HashSet فارغة:
HashSet<string> fruits = new HashSet<string>();أضف بعض العناصر إلى المجموعة:
fruits.Add("Apple");
fruits.Add("Banana");
fruits.Add("Cherry");بعد تنفيذ الكود أعلاه، تحتوي المجموعة fruits على:
["Apple", "Banana", "Cherry"]الآن، قم بإزالة "Banana" من المجموعة:
bool wasRemoved = fruits.Remove("Banana");بعد الإزالة، تحتوي المجموعة على:
["Apple", "Cherry"]ستكون قيمة wasRemoved هي true لأنه تم العثور على "Banana" وإزالته.
إذا حاولنا إزالة عنصر غير موجود:
bool wasRemoved = fruits.Remove("Orange");تظل المجموعة دون تغيير، وستكون قيمة wasRemoved هي false.
التحدي
سهلأنشئ طريقة تسمى RemoveElement تأخذ وسيطين:
- HashSet من السلاسل النصية (
set) - سلسلة نصية (
element) لإزالتها
يجب أن تحاول الطريقة إزالة العنصر المحدد من المجموعة. إذا تمت إزالة العنصر بنجاح، اطبع "Element removed: True"، وإلا فاطبع "Element removed: False". ثم، اطبع المجموعة المحدثة في سطر جديد.
ورقة مرجعية
تقوم الطريقة Remove(element) بإزالة العنصر المحدد من الـ HashSet وتُعيد true إذا تمت العملية بنجاح، و false إذا لم يتم العثور على العنصر:
HashSet<string> fruits = new HashSet<string>();
fruits.Add("Apple");
fruits.Add("Banana");
fruits.Add("Cherry");
bool wasRemoved = fruits.Remove("Banana"); // تعيد true
bool notFound = fruits.Remove("Orange"); // تعيد falseجرّب بنفسك
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
public class Program
{
public static void RemoveElement(HashSet<string> set, string element)
{
// اكتب الكود الخاص بك هنا
}
public static void Main()
{
HashSet<string> set = new HashSet<string>();
// قراءة السطر الأول للتحقق مما إذا كان بتنسيق JSON
string firstLine = Console.ReadLine();
string elementToRemove;
// التحقق مما إذا كان الإدخال بتنسيق مصفوفة JSON
if (firstLine != null && firstLine.StartsWith("[") && firstLine.EndsWith("]"))
{
try
{
// استخراج المحتوى بين الأقواس المربعة
string arrayContent = firstLine.Substring(1, firstLine.Length - 2);
// استخدام التعبيرات النمطية (regex) لمطابقة جميع النصوص المقتبسة
MatchCollection matches = Regex.Matches(arrayContent, @"""([^""]*)""");
foreach (Match match in matches)
{
// إضافة المجموعة الملتقطة (بدون علامات الاقتباس)
if (match.Groups.Count > 1)
{
set.Add(match.Groups[1].Value.Trim());
}
}
// قراءة السطر الثاني للعنصر المراد إزالته
string secondLine = Console.ReadLine();
// التحقق مما إذا كان العنصر بتنسيق نص JSON
Match elementMatch = Regex.Match(secondLine, @"""([^""]*)""");
if (elementMatch.Success && elementMatch.Groups.Count > 1)
{
elementToRemove = elementMatch.Groups[1].Value;
}
else
{
elementToRemove = secondLine;
}
}
catch (Exception ex)
{
Console.WriteLine($"Error parsing JSON input: {ex.Message}");
return;
}
}
else
{
// معالجة تنسيق الإدخال التقليدي
string[] elements = firstLine.Split(',');
foreach (string element in elements)
{
set.Add(element.Trim());
}
// قراءة العنصر المراد إزالته بالتنسيق التقليدي
elementToRemove = Console.ReadLine();
}
RemoveElement(set, elementToRemove);
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادتعريف وتهيئة المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفة ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادالمصفوفات المتعرجة (Jagged Arrays)عمليات المصفوفات الشائعةمراجعة - المصفوفات متعددة الأبعاد4تقنيات التحكم في التدفق
الإرجاع المبكرشروط الحمايةجمل القفز (goto)Break و Continueتسطيح الشروط المتداخلة7المعاملات المنطقية المتقدمة
التقييم المختصرالمعاملات المنطقية الشرطيةأولوية المعاملاتمراجعة - المعاملات المتقدمة2اتخاذ القرارات المتقدم
الشروط المتعددةالمنطق البولياني المعقدمقارنة بين If و Switchجمل Switch المتداخلةمراجعة - القرارات المتقدمة5معالجة الاستثناءات
أساسيات Try-Catchأنواع الاستثناءاتكتل Catch المتعددةالتعامل مع الملفاتكتلة FinallyUsing مقابل Try-Finallyاستثناءات مخصصةمراجعة - معالجة الأخطاء8نظام تحليل البيانات
إعداد جمع البياناتمنطق إدخال البيانات11HashSet الجزء الأول
ما هو الـ HashSet؟إضافة عنصرحذف عنصرالتحقق من وجود عنصرالفراغ والحجمملخص - HashSet3تحسينات الحلقات التكرارية
أداء الحلقات التكراريةالتكرار عبر البيانات المعقدةأنواع الحلقات التكراريةإعادة هيكلة الحلقات التكراريةملخص - الحلقات المحسنة6التعامل مع الـ Null
أساسيات الـ Null Referenceأنواع القيم القابلة للـ Nullأنماط التحقق من الـ Nullالبرمجة الدفاعيةملخص - أمان الـ Null