منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
معلومة ::: StringBuilder - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : الاقسام الاخرى (http://vb4arb.com/vb/forumdisplay.php?fid=74)
+--- قسم : قسم المقالات العام (http://vb4arb.com/vb/forumdisplay.php?fid=85)
+--- الموضوع : معلومة ::: StringBuilder (/showthread.php?tid=5437)



معلومة ::: StringBuilder - RaggiTech - 09-10-12

كاتب الموضوع : BADRMEDIA



المتغير النصي String واحد من أكثر أنواع البيانات ( Data Type ) استخداماً وشهرة فى لغة الفيجوال بيسك



كود :
[color=#000000][COLOR=#0000bb]Dim myString [/color][color=#007700]as [/color][color=#0000bb]String [/color][color=#007700]= [/color][COLOR=#dd0000]"Are You Register In VB4ARAB ?"  
[/COLOR][color=#0000bb][/color][/COLOR]


المتغير النصي String نستطيع أن نوصفه أنه مصفوفة من الحروف ، ونستطيع أن نتعامل معه كما لو كان مصفوفة

ولننظر فى هذا الكود


كود :
[color=#000000][COLOR=#0000bb][/color][color=#007700]Private [/color][color=#0000bb]Sub DisplayAcronym_Click[/color][color=#007700]( [/color][color=#0000bb]ByVal sender [/color][color=#007700]As [/color][color=#0000bb]System[/color][color=#007700].[/color][color=#0000bb]Object[/color][color=#007700], [/color][COLOR=#0000bb]_
   ByVal e [/COLOR][color=#007700]As [/color][color=#0000bb]System[/color][color=#007700].[/color][color=#0000bb]EventArgs[/color][color=#007700]) [/color][color=#0000bb]Handles Button1[/color][color=#007700].[/color][COLOR=#0000bb]Click
   Dim myString [/COLOR][color=#007700]As [/color][color=#0000bb]String [/color][color=#007700]= [/color][COLOR=#dd0000]"BADRMEDIA"
   [/COLOR][color=#0000bb]MsgBox[/color][color=#007700]([/color][color=#0000bb]myString[/color][color=#007700].[/color][color=#0000bb]Chars[/color][color=#007700]([/color][color=#0000bb]0[/color][color=#007700]) & [/color][color=#0000bb]myString[/color][color=#007700].[/color][color=#0000bb]Chars[/color][color=#007700]([/color][color=#0000bb]4[/color][color=#007700]) &  [/color][color=#0000bb]myString[/color][color=#007700].[/color][color=#0000bb]Chars[/color][color=#007700]([/color][color=#0000bb]8[/color][COLOR=#007700]))
[/COLOR][COLOR=#0000bb]End Sub  
[/COLOR][/COLOR]


ستكون النتيجة " BMA "


إذن تعاملنا مع المتغير النصي كأنه مصفوفة من الحروف ونصل لأى منها برقم الفهرس


تصف وثائق مايكروسوفت The Microsoft documentation الــــ String بأنه "immutable" وذلك يعنى أنه لا يمكن تغييره ، ولكننا نعرف أنه يمكن تغييره بسهولة


حجم البيانات داخل هذا المتغير ، ذكرت مايكروسوفت أنها تبدأ من 0 حتي قرب 2 بليون حرف يونيكود


"0 to approximately 2 billion (2 ^ 31) Unicode characters


ماذا لو احتجت حجم أكبر ، لذلك ظهر فى دوت نت 2008 هذا النوع الجديد Stringbuilder

أنه أسرع أكبر من النوع String

Stringbuilder له طرق وخصائص لابد أن تتعرف عليها منها :

Append : وهى مثل المعامل ( & ) أو ( + )

Length : يعطى الطول الحقيقى للبيانات المخزنة داخل Stringbuilder

Insert, Remove, Replace : مثل ما كانت فى المتغير String


------------------------------------------------------------------------------

تستطيع أن تحدد السعة ( Capacity ) المطلوبة لحفظ البيانات داخل المتغير الجديد Stringbuilder

لنبدأ فى التعامل معه

لابد أن نضيف فضاء الاسم ( Name Space )

System.Text قبل استعمال المتغير الجديد أو ذكر اسم الفضاء قبل استخدامه مثل ذلك



كود :
[color=#000000][COLOR=#0000bb]Dim TestAppend [/color][color=#007700]As New [/color][color=#0000bb]System[/color][color=#007700].[/color][color=#0000bb]Text[/color][color=#007700].[/color][COLOR=#0000bb]StringBuilder  
[/COLOR][/COLOR]



لنرى الآتي

كود :
[color=#000000][COLOR=#0000bb]Dim TestAppend [/color][color=#007700]As New [/color][COLOR=#0000bb]StringBuilder
MsgBox[/COLOR][color=#007700]([/color][color=#0000bb]TestAppend[/color][color=#007700].[/color][color=#0000bb]Capacity[/color][color=#007700].[/color][color=#0000bb]ToString[/color][COLOR=#007700])  
[/COLOR][color=#0000bb][/color][/COLOR]


ستجد أن النتيجة للرسالة هى 16 أى أن السعة للمتغير هى 16

ماذا لو أظهر طول أكبر من 16


لنري


كود :
[color=#000000][COLOR=#0000bb]Dim TestAppend [/color][color=#007700]As New [/color][COLOR=#0000bb]StringBuilder
TestAppend[/COLOR][color=#007700].[/color][color=#0000bb]Append[/color][color=#007700]([/color][color=#dd0000]"12345678123456781"[/color][COLOR=#007700])
[/COLOR][color=#0000bb]MsgBox[/color][color=#007700]([/color][color=#0000bb]TestAppend[/color][color=#007700].[/color][color=#0000bb]Capacity[/color][color=#007700].[/color][color=#0000bb]ToString[/color][COLOR=#007700])  
[/COLOR][color=#0000bb][/color][/COLOR]


سنجد أن السعة تقول أنها 32 أى الضعف وهكذا



معلومة ::: StringBuilder - RaggiTech - 09-10-12

ماذا لو أردنا أن يكون الحجم محدد - بمعنى تحديد حجم البداية والنهاية


نستطيع التحكم في ذلك

تستطيع تحديد بداية السعة وتحدد سعة النهاية



كود :
[color=#000000][COLOR=#0000bb]Dim TestAppend [/color][color=#007700]As New [/color][color=#0000bb]StringBuilder[/color][color=#007700]([/color][color=#0000bb]10[/color][color=#007700], [/color][color=#0000bb]20[/color][COLOR=#007700])  
[/COLOR][/COLOR]


لو قمت بادخال حجم بيانات أكبر أو أقل من الحجم المحدد هنا وهو 10 : 20

سيقوم ArgumentOutOfRangeException باظهار Exception



معلومة ::: StringBuilder - RaggiTech - 09-10-12

ذكرنا أن StringBuilder أسرع كيف ذلك ؟


سنجد مثال هنا يفرق بين استخدام And "& " واستخدام Append



تكتب القيمة فى مربع النص NumberOfIterations وتضغط على الزر واطلع على النتيجة



============================================


المثال ليس من تأليفي - لكن قمت بجمعه من شروحات