با عرض سلام خدمت کاربران محترم سایت پی وی لرن.
در این جلسه قصد داریم تا با توابع کار با رشته ها در جاوا اسکریپت JavaScript آشنا شویم. در این جلسه به موضوعاتی همچون بدست آوردن طول رشته در جاوا اسکریپت ، تابع replace در جاوا اسکریپت ، تبدیل حروف کوچک به بزرگ در جاوا اسکریپت ، تبدیل رشته به آرایه در جاوا اسکریپت و … می پردازیم
متدهای string در جاوا اسکریپت کار با رشته ها را آسان تر می کند.
داده های نوع اولیه مثل “hello” نمی توانند پروپرتی و تابعی داشته باشند زیرا شئ نیستند.
اما در جاوا اسکریپت این پروپرتی و متد ها برای داده های نوع اولیه نیز وجود دارند زیرا هنگام اجرای متد ها یا پروپرتی آن ها جاوا اسکریپت مانند یک شد با آن ها رفتار می کند.
برای بدست آوردن طول رشته در جاوا اسکریپت باید از پروپرتی length استفاده کنیم:
1 2 | var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; var sln = txt.length; // 26 |
برای پیدا کردن مکان یک رشته از تابع ()indexOf استفاده می کنیم که موقیت اولین کاراکتر رشته مشخص شده را بر می گرداند:
1 2 | var str = "Please locate where 'locate' occurs!"; var pos = str.indexOf("locate"); // 7 |
توجه داشته باشید که شماره اندیس ۰ می باشد و در نتیجه شمارش از صفر شروع می شود.
تابع ()lastIndexOf موقعیت اولین کاراکتر آخرین رشته مشخص شده را بر می گرداند:
1 2 | var str = "Please locate where 'locate' occurs!"; var pos = str.lastIndexOf("locate"); // 21 |
هر دو تابع فوق اگر رشته را پیدا نکردن -۱ را بر میگردانند.
1 2 | var str = "Please locate where 'locate' occurs!"; var pos = str.lastIndexOf("John"); |
هر دو روش پارامتر دوم را به عنوان موقعیت شروع جستجو می پذیرد:
1 2 | var str = "Please locate where 'locate' occurs!"; var pos = str.indexOf("locate",15); |
از تابع ()search برای جستجوی رشته در دشته ای دیگر استفاده می شود.
این تابع نیز موقعیت اولین کاراکتر رشته مورد نظر را بر می گرداند.
1 2 | var str = "Please locate where 'locate' occurs!"; var pos = str.search("locate"); استخراج بخشی از رشته |
۳ تابع برای استخراج متن از رشته در جاوا اسکریپت وجود دارد:
این تابع بخش از رشته را استخراج کرده و به عنوان یک رشته جدید بر می گرداند.
تابع دو پارامتر می گیرد: اندیس آغازین (start) و اندیس پایانی (end)
مثال:
خروجی به شکل زیر خواهد بود:
1 | Banana |
اگر پارامتر ها منفی باشند، شمارش از انتهای رشته شروع می شود:
1 2 | var str = "Apple, Banana, Kiwi"; var res = str.slice(-12, -6); // banana |
اگر پارامتر دوم end را مشخص نکنید، تابع رشته ای از موقعیت مشخص شده تا انتهای رشته را بر می گرداند.
این مثال یک بخشی از یک رشته را از موقعیت ۱۲ -۶ به موقعیت -۶ منتقب=ل می کند :
1 2 | var str = "Apple, Banana, Kiwi"; var res = str.slice(-12, -6); |
اگر پارامتر دوم را حذف کنید، متد دیگر بقیه ی رشته را برش می دهد:
یا از انتهای شمارش:
نکته : موقعیت های منفی در Internet Explorer 8 و قبل از آن کار نمی کنند.
این تابع مثل تابع ()slice می باشد با این تفاوت که پارامتر منفی نمی تواند بگیرد.
1 2 | var str = "Apple, Banana, Kiwi"; var res = str.substring(7, 13); |
اگر شما حذف پارامتر دوم را انجام دهید، ()substring بقیه رشته را جداخواهد کرد.
این تابع نیز مانند تابع ()slice می باشد با این تفاوت که پارامتر دوم طول رشته بدست آمده را مشخص می کند:
1 2 | var str = "Apple, Banana, Kiwi"; var res = str.substr(7, 6); // banana |
اگر شما حذف پارامتر دوم را انجام دهید، ()substring بقیه رشته را جدا خواهد کرد.
اگر پارامتر اول منفی سمت از پایان رشته محاسبه می شود.
تابع ()replace در جاوا اسکریپت یک مقدار را با مقداری دیگر در رشته جایگزین می کند:
1 2 | str = "Please visit Microsoft!"; var n = str.replace("Microsoft", "PVLearn"); |
خروجی به شکل زیر خواهد بود:
1 | Please visit PVLearn! |
تابع replace در جاوا اسکریپت رشته اصلی را تغییر نخواهد داد و نتیجه را در یک رشته جدید برمی گرداند.
تابع replace در جاوا اسکریپت به صورت پیش فرض اولین متن یافت شده را جایگزین می کند.
برای جایگزین کردن تمام رشته های پیدا شده از g/ استفاده کنید:
1 2 | str = "Please visit Microsoft and Microsoft!"; var n = str.replace(/Microsoft/g, "PVLearn"); |
به طور پیش فرض، تابع ()replace حساس است. نوشتن مایکروسافت (با حروف بزرگ) کار نمی کند:
1 2 | str = "Please visit Microsoft!"; var n = str.replace("MICROSOFT", "pvlearn"); |
برای رفع حساسیت به حروف از یک regular expression با فرمت i/ استفاده کنید :
1 2 | str = "Please visit Microsoft!"; var n = str.replace(/MICROSOFT/i, "W3Schools"); |
نکته : توجه داشته باشید که عبارات منظم بدون نقل قول نوشته شده است.
برای جایگزینی تمام کاراکترهای مچ شده از یک regular expression با فرمت g/ استفاده کنید :
1 2 | str = "Please visit Microsoft and Microsoft!"; var n = str.replace(/Microsoft/g, "W3Schools"); |
تابع ()toUpperCase تمام حروف یک رشته را به حروف بزرگ تغییر می هد:
1 2 | var text1 = "Hello World!"; // String var text2 = text1.toUpperCase(); // text2 is text1 converted to upper |
نتیجه به شکل زیر خواهد بود:
1 | HELLO WORLD! |
تابع ()toLowerCase تمام حروف یک رشته را به حروف کوچک تبدیل می کند:
1 2 | var text1 = "Hello World!"; // String var text2 = text1.toLowerCase(); // text2 is text1 converted to lower |
نتیجه به شکل زیر خواهد بود:
1 | hello world! |
1 2 3 | var text1 = "Hello"; var text2 = "World"; var text3 = text1.concat(" ", text2); |
متد ()concat می تواند مورد استفاده قرار گیرد به جای عملگر + ، این دو خط کد یک کار را انجام می دهد:
1 2 | var text = "Hello" + " " + "World!"; var text = "Hello".concat(" ", "World!"); |
تمام متدهای رشته ، رشته ی جدید را بازگشت می دهند. آنها رشته های اصلی را تغییر نمی دهند.
پس می توان گفت متدهای رشته نمی توانند رشته ها را تغییر دهند، بلکه رشته ی جدید را نتیجه می دهند.
این تابع تمام کاراکتر های خالی space را از رشته حذف می کند:
نکته : متد ()String.trim در Internet Explorer 8 و یا نسخه ی قدیمی تر پشتیبانی نمی شود.
اگر شما نیاز به استفاده از اینترنت اکسپلورر ۸ دارید، می توانید از String.replace به همراه عبارت زیر استفاده کنید:
1 2 | var str = " Hello World! "; alert(str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '')); |
شما همچنین می توانید به جای راه حل فوق به اضافه تر و تمیز تابع برای String.prototype جاوا اسکریپت استفاده کنید:
1 2 3 4 5 6 | if (!String.prototype.trim) { String.prototype.trim = function () { return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); }; var str = " Hello World! "; alert(str.trim()); |
۳ روش برای استخراج رشته کاراکتر وجود دارد:
تابع ()charAt یک کاراکتر با موققعیت مشخص شده را در یک رشته بر می گرداند:
متد ()charCodeAt در یونیکد کاراکتر در فهرست مشخص شده را بازمی گرداند:
متد بازگرداندن کد UTF-16 (یک عدد صحیح است بین ۰ و ۶۵۵۳۵):
1 2 3 | var str = "HELLO WORLD"; str.charCodeAt(0); // returns 72 |
۵ ECMAScript اجازه می دهد تا با استفاده از براکت [] به کاراکتر مورد نظر در رشته دسترسی پیدا کنید:
دسترسی به خصوصیات ممکن است کمی غیر قابل پیش بینی باشد:
1 2 3 | var str = "HELLO WORLD"; str[0] = "A"; // Gives no error, but does not work str[0]; |
اگر می خواهید در قالب آرایه با رشته ها کار کنید، شما می توانید آن را به آرایه ای تبدیل کنید.
برای تبدیل رشته به آرایه در جاوا اسکریپت از متد ()split استفاده می کنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <!DOCTYPE html> <html> <body> <p>Click "Try it" to display the first array element, after a string split.</p> <button onclick="myFunction()">Try it</button> <p id="demo"></p> <script> function myFunction() { var str = "a,b,c,d,e,f"; var arr = str.split(","); document.getElementById("demo").innerHTML = arr[5]; } </script> </body> </html> |
خروجی کد بالا کاراکتر a می باشد.
اگر جداکننده “” باشد، آرایه برگشتی یک آرایه تک کاراکتری خواهد بود:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <!DOCTYPE html> <html> <body> <p id="demo"></p> <script> var str = "Hello"; var arr = str.split(""); var text = ""; var i; for (i = 0; i < arr.length; i++) { text += arr[i] + "<br>" } document.getElementById("demo").innerHTML = text; </script> </body> </html> |
خروجی کد بالا به شکل زیر می باشد:
1 2 3 4 5 | H e l l o |
اگر جدا کننده مشخص شده در رشته وجود نداشته باشد، کل رشته در اندیس ۰ قرار می گیرد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <!DOCTYPE html> <html> <body> <p id="demo1"></p> <p id="demo2"></p> <script> var str = "Hello"; var arr = str.split(","); var text1 = ""; var text2 = ""; var i; text1 = arr[0]; text2 = arr[1]; document.getElementById("demo1").innerHTML = text1; document.getElementById("demo2").innerHTML = text2; </script> </body> </html> |
خروجی به شکل زیر می باشد:
1 2 3 | Hello undefined |
جلسه توابع کار با رشته ها در جاوا اسکریپت نیز به پایان رسید.
در جلسه آینده به آرایه ها در جاوا اسکریپت خواهیم پرداخت.با ما همراه باشید
icqx
به شدت جای خالی دوره ی آموزشی ‘ تایپ اسکریپت ‘ حس میشه ! , توی اینترنت ریخته ولی اونی که pvlearn بسازه یه چی دیگست !!!!
پی وی لرن
ممنون، نظر لطف شماست
در برنامه قرار خواهیم داد