Strings
JavaScript'da matnli ma'lumotlar string
(matn) sifatida saqlanadi. Yagona belgi uchun alohida tur mavjud emas.
String'larning ichki formati doimo UTF-16, bu sahifa kodlashiga bog'liq emas.
Quotes
Qavslarning turlari haqida eslaylik.
String'lar ikkita tilda — bir yoki ikki qavsda yoki backticks (`) ichida joylashishi mumkin:
Yagona va ikki qavslar asosan bir xil. Biroq, backticks bizga string ichiga istalgan ifodani joylashtirish imkonini beradi, uni ${…}
ichida o'rab olamiz:
Backticks'larning yana bir afzalligi shundaki, ular string'ni bir nechta qatorlarga bo'lish imkonini beradi:
Yagona yoki ikki qavslar bu tarzda ishlamaydi.
Agar biz ularni ishlatishga harakat qilsak va bir nechta qatorlarni ishlatmoqchi bo'lsak, xato bo'ladi:
Yagona va ikki qavslar dasturiy tillar yaratishning qadimgi davridan kelib chiqadi, ularning ko'p qatorda string'larni qo'llash ehtiyoji ko'zda tutilmagan. Backticks keyinchalik paydo bo'lib, shuning uchun ular ko'proq moslashuvchan.
Backticks shuningdek, string'dan oldin "shablon funksiyasini" belgilashga imkon beradi. Sintaksis: func\
string`. Funksiya
func` avtomatik ravishda chaqiriladi, string va o'rnatilgan ifodalarni qabul qiladi va ularni qayta ishlaydi. Ushbu xususiyat "tagged templates" deb ataladi, u kamdan-kam uchraydi, ammo MDN'da o'qishingiz mumkin: Template literals.
Special characters
Birinchi va ikki qavslar bilan ko'p qatorli string'larni yaratish hali ham mumkin, buni yangi qator belgisini (\n
) ishlatish orqali amalga oshiramiz, bu qatorni ajratishni bildiradi:
Oddiy misol sifatida, bu ikki qator bir xil, faqat turli xil yozilgan:
Boshqa kamdan-kam uchraydigan maxsus belgilar mavjud:
Belgi | Tavsif |
---|---|
\n | Yangi qator |
\r | Windows matn fayllarida \r\n kombinatsiyasi yangi qatorni ifodalaydi, ammo non-Windows OSlarda faqat \n. Tarixiy sabablarga ko'ra, ko'p Windows dasturlari ham \n'ni tushunadi. |
', ", ` | Qavslar |
\ | Backslash |
\t | Tab |
\b, \f, \v | Backspace, Form Feed, Vertical Tab – ular eski vaqtlar kelib chiqadi, hozirgi kunda ishlatilmaydi (ularni hozirgi kunda unutishingiz mumkin). |
Ko'rib turganingizdek, barcha maxsus belgilar orqaga qaratilgan belgi \
bilan boshlanadi. U "escape character" deb ataladi.
Uni shunchaki ko'rsatishimiz kerak bo'lsa, biz asl backslash \
ni ko'rsatishimiz kerak:
Shuningdek, so-called "escaped" quotes \'
, \"
, ``` string ichidagi qavsni kiritish uchun ishlatiladi.
Masalan:
Ko'rib turganingizdek, biz ichki qavsni orqaga qaratilgan belgi \'
bilan oldindan qo'shishimiz kerak, aks holda bu string oxirini ko'rsatadi.
Albatta, faqat ichki qavslar qavsni o'rnatilgan qavslar bilan qo'shilishi kerak. Shunday qilib, yanada estetik yechim sifatida biz ikki qavs yoki backticks'ni ishlatishimiz mumkin:
Bu maxsus belgilar tashqarisida Unicode kodlari uchun maxsus notatsiya mavjud \u…
, bu kamdan-kam ishlatiladi va Unicode haqida optional bo'limda qamrab olingan.
String length
length
xususiyati string uzunligini ko'rsatadi:
Eslatib o'tamiz, \n
bitta "maxsus" belgi bo'lib, uzunlik haqiqatan ham 3.
length
xususiyati
Boshqa tillar bo'yicha tajribasi bor odamlar ba'zida str.length()
deb yozishadi, lekin bu to'g'ri emas. Bu ishlamaydi.
Iltimos, str.length
raqamli xususiyatdir, u funktsiya emas. Unga qo'shimcha qavslar qo'shishga hojat yo'q. str.length()
emas, balki str.length
.
Accessing characters
Pozitsiya pos
dagi belgini olish uchun kvadrat qavslar [pos]
yoki str.at(pos)
metodini chaqiring. Birinchi belgi nol pozitsiyasidan boshlanadi:
at(pos)
metodining afzalligi shundaki, u manfiy pozitsiyalarga ruxsat beradi. Agar pos
manfiy bo'lsa, u stringning oxiridan hisoblanadi.
Shunday qilib, .at(-1)
oxirgi belgi, .at(-2)
undan oldingi belgi va hokazo.
Kvadrat qavslar har doim manfiy indekslar uchun undefined
qaytaradi, masalan:
Biz shuningdek for..of
orqali belgilarni takrorlashimiz mumkin:
Strings are immutable
String'lar JavaScript'da o'zgarmaydi. Belgi o'zgartirilishi mumkin emas.
Bu ishlamayotganini ko'rsatish uchun sinab ko'raylik:
Odatda ishlatiladigan yechim - eski string o'rniga yangi string yaratish va uni str
ga tayinlash.
Masalan:
Keyingi bo'limlarda bu haqida ko'proq misollarni ko'rib chiqamiz.
Changing the case
toLowerCase()
va toUpperCase()
metodlari yozuvni o'zgartiradi:
Yagona belgini kichik qilish uchun:
Searching for a substring
Substringni string ichida qidirishning bir nechta usullari mavjud.
str.indexOf
Birinchi metod str.indexOf(substr, pos)
.
U substr
ni str
ich
ida qidiradi va uning birinchi topilgan joyini qaytaradi. Agar substr
topilmasa, -1
qaytariladi.
Masalan:
str.includes
Yana bir metod — str.includes(substr, pos)
.
Bu ham qidiradi, lekin natijada faqat true
yoki false
qaytaradi:
str.startsWith
va str.endsWith
Agar siz stringning boshida yoki oxirida ma'lum bir substring bo'lishini tekshirmoqchi bo'lsangiz, bu metodlarni ishlatishingiz mumkin:
Getting a substring
str.slice(start, end)
metodini foydalanib substringni olish mumkin:
str.slice()
metodini so'rov qilishda, agar end
bo'sh qoldirilsa, start
dan oxirigacha bo'lgan substring qaytariladi:
str.substring(start, end)
metodining o'xshashligi mavjud. str.slice
'dan farqi shundaki, substring()
metodida manfiy indekslar ishlatilmaydi.
Agar start
kattaroq bo'lsa, end
qiymatidan, ularni almashadi.
str.substr(start, length)
str.substr(start, length)
metodini ham ishlatishingiz mumkin.
Bunda length
substring uzunligini bildiradi:
Strings in JavaScript
JavaScript'da string'lar butunlay o'zgarmas. Har qanday o'zgartirish string'ni yaratadi, eski stringni saqlab qolmaydi. Masalan, str[0]
yozishda Hi
'ni h
bilan o'zgartirib bo'lmaydi. Yangi string yaratish kerak:
String trimming
Stringni boshlanish va oxiridagi bo'shliqlardan tozalash uchun trim()
, trimStart()
, va trimEnd()
metodlari mavjud: