تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الفئة StringBuilder
#1
كاتب الموضوع : samerselo

تخزن الفئة StringBuilder سلاسل نصية ديناميكية وتقدم لنا طرائق للتعامل معها وهي تعتبر أسرع بكثير من الفئة String ولكنها تستخدم قدرا من الذاكرة أكبر بشكل ملحوظ من تلك التي تستخدمها الفئة String وحتى تستطيع استخدام الفئة StringBuilder في مشروعك عليك إضافة مرجع لمجال الأسماء System.Text وبافتراض أنك قمت باستيراد مجال الأسماء المذكور يمكننا تعريف متغير يشير إلى تلك الفئة


كود :
Dim txt As New StringBuilder
وبما أنها تتعامل مع سلاسل نصية ديناميكية فيعتبر من الجيد تعريف حجم النص الذي ستقوم بتخزينه فيها مسبقا وتكون السعة الافتراضية 16 محرفا وهذه السعة تتضاعف تلقائيا في كل مرة تقوم بتجاوزها ولضبط هذه السعة نقوم بضبط قيمة الخاصية Capacity.
ولإنشاء كيان جديد من الفئة StringBuilder يمكنك استدعاء باني الفئة بدون تمرير أية محددات أو تمرير قيمة نصية افتراضية


كود :
Dim txt As New StringBuilder("some string")
وإن كنت قادرا على تقدير طول النص الذي ستقوم بتخزينه يمكنك تمرير هذه القيمة لباني الفئة وبهذا لم يعد هناك تغييرات مستمرة في السعة عند تخزين المحارف في StringBuilder


كود :
Dim txt As New StringBuilder(initialCapacity)
ومع ذلك فالسعة التي قمت بتحديدها ليست نهائية إذ يمكن أن تتغير أثناء التنفيذ وستقوم الفئة StringBuilder بضبط قيمة السعة آليا وإن كنت ترغب بتحديد سعة عظمى لما سيتم تخزينه يمكنك استخدام الباني التالي


كود :
Dim txt As New StringBuilder( initialCapacity, maxCapacity)
وعندما تريد إنشاء كيان جديد من الفئة StringBuilder مستخدما كلا من السعة الابتدائية والسعة العظمى والقيمة الابتدائية يمكنك استخدام باني الفئة بالشكل التالي


كود :
Dim txt As New StringBuilder( string, initialCapacity, maxCapacity)
رأينا حتى الآن خاصيتان أساسيتان للفئة StringBuilder هما Capacity و MaxCapacity وإضافة لهما تقدم لنا هذه الفئة الخصائص Length و Chars والتي تماثل الخصائص التي تحمل نفس الاسم في الفئة String فالخاصية Length تعيد عدد المحارف في الكيان الحالي للفئة StringBuilder والخاصية Chars تعيد مصفوفة محارف وعكس الخاصية Chars الخاصة بالفئة String فهذه الخاصية قابلة للقراءة والكتابة ويكون ترتيب العنصر الأول في هذه المصفوفة هو الصفر وتمتلك الفئة StringBuilder العديد من الطرائق المماثلة لتلك التي تحمل نفس الاسم في الفئة String ولكنها تتعامل مباشرة مع النص الذي يتم تطبيقها عليه ولاتعيد سلسلة نصية جديدة

Append
تضيف الطريقة Append نوعا أساسيا للكيان الحالي للفئة StringBuilder وتكون صيغتها على الشكل التالي حيث يمكن أن يكون المحدد value محرف مفرد أو نص أو تاريخ أو أية قيمة رقمية


كود :
SB.Append(value)
فعندما تقوم بإضافة قيمة رقمية إلى StringBuilder يتم تحويلها إلى نص ثم يتم إضافتها إلى النص المخزن في StringBuilder كما يمكن إضافة قيمة من النوع Object إلى StringBuilder حيث تكون القيمة الفعلية المضافة هي القيمة المعادة من الخاصية ToString العائدة لـ Object كما يمكنك إضافة مصفوفة محارف مستخدمين الصيغة التالية


كود :
SB.Append(chars, startIndex, count)
أو يمكنك إضافة قسم من نص بتحديد مكان بدء ذلك القسم وعدد المحارف المراد إضافتها


كود :
SB.Append(string, startIndex, count)
AppendFormat
الطريقة AppendFormat مشابهة للطريقة Append إلا أنها تقوم بتنسيق النص قبل إضافته ويكون للنص المضاف تحديد معين للتنسيق إضافة إلى قيمته وتكون الصيغة العامة للطريقة AppendFormat كما يلي


كود :
SB.AppendFormat(string, values)
والمحدد الأول يكون نص يحدد خصائص التنسيق و values تكون عبارة عن مصفوفة من القيم واحدة من أجل كل تحديد تنسيق معين وفي المحدد string إذا كان لديك عدد قليل من القيم لتنسيقها وحتى أربعة قيم يمكنك تمريرها كمحددات منفصلة مفصولة بفاصلة


كود :
SB.AppendFormat(string, value1, value2, value3, vlaue4)
والكود التالي يضيف النص Your balance as of Thursday, August 2, 2007 is $19,950.40 للمتغير StringBuilder


كود :
Dim statement As New StringBuilder
statement.AppendFormat( _
"Your balance as of {0:D} is ${1: #,###.00}", _
#8/2/2007#, 19950.40)
وكل تحديد لصيغة يتم حصره بقوسين من الشكل {} ويتم ترقيمهم بالتسلسل ابتداء من الصفر ثم تتبع فاصلتهم بالتحديد الفعلي والتنسيق D بخبر الطريقة AppendFormat للقيام بتنسيق النص المحدد بتنسيق التاريخ الطويل والتنسيق الثاني يستخدم فاصل الآلاف وعددان عشريان بعد الفاصلة العشرية من أجل القيمة حيث يضيف الكود التالي نفس النص ولكنها تمرر القيم عبر مصفوفات


كود :
Dim statement As New StringBuilder
Dim values() as Object = {#8/2/2007#, 19950.4}
statement.AppendFormat( _
"Your balance as of {0:D} is ${1:#,###.00} ", values)
وفي كلتا الحالتين سيحمل المتغير statement نصا كما يلي


كود :
Your Balance as of Thursday, August 2, 2007 is $19,950.40
Insert
تضيف هذه الطريقة نصا للكيان الحالي للفئة StringBuilder وتكون صيغتها


كود :
SB.Insert(index , value)
حيث أن المحدد index يحدد المكان الذي سيتم إدراج النص الجديد فيه و value هو النص الذي سيتم إدراجه وكما في الطريقة Append يمكن أن تكون value من النوع Object وتكون بالتالي القيمة المدرجة هي القيمة المعادة من الطريقة ToString العائدة لـ Object الأمر الذي يعني أنه يمكنك استخدام الطريقة Insert لإدراج قيم عددية وتواريخ مباشرة ضمن المتغير من النوع StringBuilder وتمكننا صيغة معدلة قليلا من الطريقة Insert من إدراج عدة نسخ من نص معين ضمن StringBuilder


كود :
SB.Insert(index, string, count)
كما يمكن استخدام Insert لإدراج مصفوفة محارف في موقع محدد بالمحدد index في الكيان الحالي لـ StringBuilder حيث أن المحدد chars هو عبارة عن مصفوفة محارف


كود :
SB.Insert(index, chars)
Remove
هذه الطريقة تزيل عددا من المحارف من StringBuilder الحالي بدءا من موقع محدد وتكون صيغتها كالتالي حيث أن المحدد startIndex هو موقع أول محرف ستتم إزالته من النص والمحدد count هو عدد المحارف التي سيتم إزالتها


كود :
SB.Remove(startIndex, count)
Replace
هذه الطريقة تقوم باستبدال جميع تواجدات نص ضمن StringBuilder بنص آخر وتكون صيغتها كالتالي حيث يمكن أن تكون قيمة أي من المحددين نصا أو محرفا


كود :
SB.Replace(oldValue, newValue)
وعكس ما يحصل في الفئة String فعملية الاستبدال تتم في الكيان الحالي للفئة StringBuilder وهذه الطريقة لا تعيد نصا آخر كما يمكننا استخدام شكل آخر من الطريقة Replace لتحديد الاستبدالات في قطعة محددة من كيان StringBuilder


كود :
SB.Replace(oldValue, newVlaue, startIndex, count)
هذه الطريقة تستبدل جميع تواجدات oldValue بقيمة newVlaue في القسم المحدد وبدايته من startIndex ويمتد عددا من المحارف بقيمة count ابتداء من ذلك الموقع الابتدائي

ToString
تستخدم هذه الطريقة لتحويل كيان StringBuilder إلى String وضبط القيمة المعادة في متغير من النوع String وهي تعيد نصا يمثل القيمة المحتواة في المتغير من النوع StringBuilder التي تم تطبيقها عليها
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  Tips and tricks - رقم 1 - StringBuilder oneyemenweb2 1 322 06-10-12, 06:43 PM
آخر رد: Mr. DotNet
  موضوع للنقاش- الفئة WeakReference RaggiTech 7 521 05-10-12, 01:25 AM
آخر رد: RaggiTech
  تعرف على الفئة System.Environment ( مجرد بدايه فقط ) RaggiTech 0 278 03-10-12, 09:19 AM
آخر رد: RaggiTech
  تحديد زمن تنفيذ العمليات باستخدام الفئة TimeSpan RaggiTech 0 366 03-10-12, 07:39 AM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم