البرمجة

تقنية فعالة لإزالة المسافات في C#

في سياق لغة البرمجة C#، عند الحاجة إلى إزالة المسافات البيضاء من سلسلة نصية دون استخدام الطرق التقليدية مثل .Trim أو .Replace أو حتى استخدام القوائم، يمكن اتباع نهج مختلف لتحقيق ذلك.

للقيام بذلك بدون استخدام .Trim أو .Replace، يمكننا استخدام نفس فكرتك حول تحويل السلسلة إلى مصفوفة من الأحرف. ومن ثم، يمكننا إنشاء مصفوفة جديدة بحجم يعكس عدد الأحرف الغير فارغة في السلسلة الأصلية.

هنا هو الكود المقترح:

csharp
char[] firstArray; char[] secondArray; string someString; // حساب عدد الأحرف الغير فارغة في السلسلة الأصلية int nonWhitespaceCount = 0; for (int i = 0; i < someString.Length; i++) { if (someString[i] != ' ') { nonWhitespaceCount++; } } // تهيئة المصفوفة الثانية بحجم يعكس عدد الأحرف الغير فارغة secondArray = new char[nonWhitespaceCount]; // ملء المصفوفة الثانية بالأحرف الغير فارغة int index = 0; for (int i = 0; i < someString.Length; i++) { if (someString[i] != ' ') { secondArray[index] = someString[i]; index++; } } // تحويل المصفوفة الثانية إلى سلسلة نصية someString = new string(secondArray);

يقوم الكود أولاً بحساب عدد الأحرف الغير فارغة في السلسلة الأصلية، ثم يقوم بتهيئة المصفوفة الثانية بحجم يعكس هذا العدد. بعد ذلك، يتم ملء المصفوفة الثانية بالأحرف الغير فارغة، وأخيراً يتم تحويل المصفوفة الثانية إلى سلسلة نصية.

هذا النهج يتجنب الحاجة إلى مصفوفة أولية كبيرة تحتوي على الفراغات، وبالتالي يكون أكثر فعالية من حيث استخدام الذاكرة.

المزيد من المعلومات

إذا كنت تتعامل مع نصوص طويلة أو متعددة، يمكنك تحسين الأداء عن طريق استخدام StringBuilder بدلاً من تحويل المصفوفة الثانية إلى سلسلة نصية. StringBuilder يوفر طريقة فعالة لبناء سلاسل النصوص، خاصةً عند قيامك بعمليات متكررة لإضافة نصوص.

إليك الكود المحدث:

csharp
string someString = "Your input string"; StringBuilder resultBuilder = new StringBuilder(); for (int i = 0; i < someString.Length; i++) { if (someString[i] != ' ') { resultBuilder.Append(someString[i]); } } string resultString = resultBuilder.ToString();

هذا الكود يستخدم StringBuilder لبناء السلسلة النهائية بدلاً من استخدام مصفوفة وتحويلها إلى سلسلة. يمكن أن يكون هذا أكثر فعالية من حيث الأداء عند التعامل مع نصوص كبيرة.

كما يمكن أن يكون هذا النهج أفضل أيضًا عند التعامل مع تحديثات كبيرة على النص الأصلي، حيث يمكنك استخدام نفس StringBuilder لتحديث النص بدلاً من إعادة بناءه من البداية.

زر الذهاب إلى الأعلى