سلام درود خدمت همراهان همیشگی سایت پی وی لرن . با آموزش زبان برنامه نویسی #F همراهتون هستیم. رشته ها از انواع داده هایی هستند که تقریبا در تمام زبان های برنامه نویسی یافت می شوند. رشته به وسیله کلمه کلیدی string بیان می شود. یک رشته گروهی از کاراکترها شامل اعداد و حروف و نشانه ها می باشند. در ادامه توضیحات بیش تری راجع به رشته ها در #F و همچنین روش های نادیده گرفتن Escape Sequence در #F رو خواهیم داشت.
در #F ،نوع string متنی تغییر ناپذیر را به عنوان دنباله ای از کاراکترهای یونیکد نشان می دهد.
String Literals توسط علامت نقل قول (“) مشخص شده اند.
کاراکترهای ویژه دیگری برای استفاده های خاص مانند خط جدید، تب و غیره وجود دارد.
آن ها با استفاده از کاراکتر backslash (\) کدگذاری می شوند.
کاراکتر backslash و کاراکترهای مربوطه به وسیله escape sequence ساخته می شوند.
جدول زیر escape sequence هایی را که توسط #F پشتیبانی می شود نشان می دهد.
کاراکتر | Escape sequence |
---|---|
Backspace | b\ |
Newline | n\ |
Carriage return | r\ |
Tab | t\ |
Backslash | \\ |
Quotation mark | “\ |
Apostrophe | ‘\ |
Unicode character | uXXXX\ یا UXXXXXXXX\ (جایی که X نشان دهنده یک رقم شانزده رقمی است) |
دو روش زیر باعث می شود کامپایلر دنباله فرار را نادیده بگیرد .
هنگامی که نماد @ قبل از رشته ای از حروف آید، verbatim string نامیده می شود.
به این ترتیب،
تمام دنباله فرار یا Escape Sequence در رشته نادیده گرفته می شوند، به جز این که دو کاراکتر quotation mark به عنوان یک quotation mark تفسیر می شوند.
هنگامی که یک رشته با نقل قول های سه گانه (triple quotes) محصور می شود، در این صورت نیز تمامی Escape Sequence نادیده گرفته می شوند،
از جمله کاراکتر های علامت نقل قول دوگانه.
مثال زیر این تکنیک را نشان می دهد و خواهد گفت که چگونه با XML یا سایر ساختارهایی که شامل علامت نقل قول جاسازی شده هستند کار کنید.
( روش های نادیده گرفتن Escape Sequence در #F )
1 2 3 | // Using a verbatim string let xmldata = @"<book author = ""Lewis, C.S"" title = ""Narnia"">" printfn "%s" xmldata |
هنگامی که شما برنامه را کامپایل و اجرا می کنید، خروجی زیر را تولید می کند .
1 | <book author = "Lewis, C.S" title = "Narnia"> |
جدول زیر عملیات اساسی در رشته ها در #F را نشان می دهد .
مقدار | توضیحات |
---|---|
collect : (char → string) → string → string | یک رشته جدید ایجاد می کند که کاراکتر ها نتایج استفاده از یک تابع مشخص برای هر یک از کاراکترهای رشته ورودی و پیوند دادن رشته های حاصل است. |
concat : string → seq<string> → string | یک رشته جدید ایجاد شده توسط ترکیب رشته های داده شده با یک جداکننده را برمی گرداند. |
exists : (char → bool) → string → bool | تست اگر هر کاراکتر رشته مطابق با پیش فرض داده شده باشد. |
forall : (char → bool) → string → bool | تست اگر تمام کاراکترها در رشته مطابق با پیش فرض داده شده باشند. |
init : int → (int → string) → string | یک رشته جدید ایجاد می کند که کاراکتر ها نتایج استفاده از یک تابع مشخص برای هر رشته و ترکیب رشته های حاصل است. |
iter : (char → unit) → string → unit | یک تابع مشخص برای هر کاراکتر در رشته اعمال می شود. |
iteri : (int → char → unit) → string → unit | یک تابع مشخص را به شاخص یا ایندکس هر کاراکتر در رشته و کاراکتر خود اعمال می کند. |
length : string → int | طول رشته را باز می گرداند. |
map : (char → char) → string → string | یک رشته جدید ایجاد می کند که کاراکترها نتایج استفاده از یک تابع مشخص برای هر یک از کاراکترهای رشته ورودی است. |
mapi : (int → char → char) → string → string | یک رشته جدید ایجاد می کند که شخصیت ها نتایج استفاده از یک تابع مشخص برای هر کاراکتر و شاخص یا ایندکس رشته ورودی است. |
replicate : int → string → string | رشته با تلفیق تعداد مشخصی از نمونه های یک رشته باز گردانده می شود. |
مثال های زیر استفاده از برخی از ویژگی های فوق را نشان می دهد.
تابع String.collect یک رشته جدید ایجاد می کند که کاراکترها نتایج استفاده از یک تابع مشخص برای هر یک از کاراکترهای رشته ورودی و ترکیب رشته های حاصل هستند.
1 2 3 | let collectTesting inputS = String.collect (fun c -> sprintf "%c " c) inputS printfn "%s" (collectTesting "Happy New Year!") |
هنگامی که شما برنامه را کامپایل و اجرا می کنید، خروجی زیر را تولید می کند.
1 | H a p p y N e w Y e a r ! |
تابع String.concat ترکیبی از توالی مشخصی از رشته ها با جدا کننده و یک رشته جدید را باز می گرداند.
1 2 3 | let strings = [ "Tutorials Point"; "Coding Ground"; "Absolute Classes" ] let ourProducts = String.concat "\n" strings printfn "%s" ourProducts |
هنگامی که شما برنامه را کامپایل و اجرا می کنید، خروجی زیر را تولید می کند.
1 2 3 | Tutorials Point Coding Ground Absolute Classes |
روش String.replicate یک رشته را با تلفیق تعداد مشخصی از نمونه های یک رشته به ارمغان می آورد.
1 | printfn "%s" <| String.replicate 10 "*! " |
هنگامی که شما برنامه را کامپایل و اجرا می کنید، خروجی زیر را تولید می کند.
1 | *! *! *! *! *! *! *! *! *! *! |
با توجه به توضیحات بالا دیدیم که رشته به وسیله کلمه کلیدی string بیان می شود.
توضیحات بیش تری راجع به رشته ها در #F و همچنین روش های نادیده گرفتن Escape Sequence در #F رو نیز بیان نمودیم.