Skip to content

Latest commit

 

History

History
91 lines (58 loc) · 8.87 KB

Harnessing Built-in Methods for Efficient Substring Extraction.hy.md

File metadata and controls

91 lines (58 loc) · 8.87 KB

Տեքստից ենթատեքստի ստացումը: Ի՞նչ մեթոդներ կան, ո՞րն է այդ մեթոդներից ամենաճկունը

Շատ հաճախ մեզ պետք է լինում ոչ միայն պարզել թե արդյո՞ք տեքստը պարունակում է այդ ենթատողը ու ո՞ր ինդեքսում է այն գտնվում, այլ նաև ստանալ այն և օգտագործել։ JavaScript-ը դրա համար ունի 3 ներդրված մեթոդ։ Փորձենք մանրամասն քննարկել այդ մեթոդները, և պարզել որն է նրանցից ամենաճկունը։ Եվ այսպես այդ մեթոդներն են՝

  • substring
  • substr
  • slice

Սկսենք substring -ից։ Նախ տեսնենք թե MDN-ում ոնց է նկարագրվում տվյալ մեթոդը և ինչպես է այն աշխատում։ Գրելաձևը հետևյալն է՝

str.substring(start [,end]), որտեղ․

  • start-ն ամբողջ թիվ է, որը կարող է լինել 0-ից մինչև տեքստի երկարության չափ։ Այն ԸՆԴԳՐԿՎՈՒՄ Է արդյունքում ստացվելիք ենթատեքստի մեջ։
  • end-ը ոչ պարտադիր (օպցիոնալ) երկրորդ պարամետրն է։ Սա նույնպես ամբողջ թիվ է, որի տիրույթը կարող է լինել 0-ից մինչև տեքստի երկարության չափ։ Արդյունքում ստացվելիք ենթատեքստի մեջ end-ին համապատասխանող ինդեքսում գտնվող սիմվոլը ՉԻ ԸՆԴԳՐԿՎՈՒՄ։

Այսպիսով ՝

  • Եթե start արգումենտը հավասար է end արգումենտին, ապա substring մեթոդը կվերադարձնի դատարկ տող։

  • Եթե end արգումենտը բացակայում է, ապա substring մեթոդը կառանձնացնի start-ից սկսած մինչև տեքստի վերջն ընկած ենթատեքստը։

  • Եթե արգումենտներից յուրաքանչյուրը փոքր է 0-ից, կամ հավասար է NaN-ի, ապա այն կընկալվի որպես հավասար 0-ի։

  • Եթե արգումենտներից յուրաքանչյուրը մեծ է տողի երկարության չափից, ապա այն կընկալվի որպես մաքսիմալ հնարավոր արժեքով՝ այսինքն տեքստի երկարության չափ։

  • Եթե start արգումենտը մեծ լինի end արգումենտից, ապա մեթոդը կաշխատի այնպես, ասես թե արգումենտները տեղերով փոխված են։ Օրինակ՝ str.substring(1, 0) === str.substring(0, 1)։

Այժմ դիտարկենք մի քանի օրինակներ․

let str = "Armenian JavaScript Community";
console.log(str.substring(0, 3)); // "Arm"
console.log(str.substring(3, 0)); // "Arm"

Վերևի օրինակի երկու դեպքում էլ կստանանք "Arm" ենթատեքստը։

console.log(str.substring(9, 19)); // "JavaScript"
console.log(str.substring(19, 9)); // "JavaScript"

Այս երկու դեպքն էլ կվերադարձնի "JavaScript" ենթատեքստը։

Հաջորդը՝ substr մեթոդն է։ Կրկին դիմենք MDN-ի օգնությանը պարզելու համար թե ինչպես է այն աշխատում։ Գրելաձևը հետևյալն է՝

str.substr(start [,length]), որտեղ․

  • start - Դիրքն է, որտեղից սկսած «առանձնացնելու» է սիմվոլները։ Բնականաբար պետք է լինի ամբողջ թիվ։ Եթե տրված է բացասական թիվ, ապա այն ընկալվում է որպես (str.length - start), որտեղ str.length-ը տեքստի երկարությունն է։

  • length - Ոչ պարտադիր երկրորդ պարամետրն է։ Այն ցույց է տալիս թե քանի սիմվոլ ենք մենք ուզում ստանալ։ Մեթոդը վերադարձնում է նոր տեքստ՝ բաղկացած հին տեքստի այն մասից, որը մենք «կտրել» ենք տրված արգումենտների օգնությամբ։

Այսպիսով՝

  • Եթե start արգումենտը դրական թիվ է, և այն մեծ կամ հավասար է տեքստի երկարությանը, ապա մեթոդը վերադարձնում է դատարկ տող։
  • Եթե start արգումենտը լինի բացասական թիվ, ապա substr մեթոդը կօգտագործի նրան, հաշվարկը կատարելով տեքստի վերջից։ Եթե բացի նրանից որ բացասական լինի, նաև մոդուլով մեծ լինի տեքստի երկարությունից, ապա կընկալվի որպես 0։

start արգումենտի բացասական լինելը նորմալ է JavaScript-ի, բայց ոչ ECMAScript-262-ի մյուս հայտնի ռեալիզացիա JScript (JavaScripti-ի Microsofti-ի տարբերակը)-ի մոտ։

  • Եթե length արգումենտը 0 կամ բացասական թիվ է, ապա մեթոդը կվերադարձնի դատարկ տող։ Եթե այն բացակայում է, ապա մեթոդը կվերադարձնի սկսած start-ից մինչև տողի վերջ եղած ենթատողը։

Ահա մի քանի օրինակներ ՝

const str = "Armenian JavaScript Community";
console.log(str.substr(9, 20)); // "JavaScript Community"
console.log(str.substr(-9, 10)); // "Community"

Եվ իհարկե վերջին և ամենակարևոր մեթոդը՝ slice-ը։ Գրելաձևը հետևյալն է՝

str.slice(start [,end]);

Որտեղ՝

  • start - Ինդեքսն է, որտեղից պետք է սկսել հաշվարկը։ Եթե այն բացասական է, ապա կընկալվի որպես str.length + start, որտեղ str.length-ը դա տեքստի երկարությունն է։

  • end - Ոչ պարտադիր երկրորդ պարամետրն է։ Այս պարամետրով տալիս ենք թե մինչև որտեղ ենք ուզում մեթոդի օգնությամբ ենթատեքստը առանձնացնել։ Եթե այն բաց թողենք, ապա մեթոդը կառանձնացնի start-ից սկսած մինչև տեքստի վերջ։ Եթե այն բացասական թիվ է, ապա ընկալվում է որպես str.length + end, որտեղ str.length-ը տողի երկարությունն է։

slice մեթոդը վերադարձնում է ենթատեքստը, որը սկսվում է տողի start ինդեքսին պատկանող սիմվոլից և վերջանում է end ինդեքսի մոտ (end ինդեքսին պատկանող սիմվոլը ՉԻ ԸՆԴԳՐԿՎՈՒՄ վերադարձվող ենթատողի մեջ)։ Բերենք մի քանի օրինակներ՝

let str = "Armenian JavaScript Community";
console.log(str.slice(0, 8)); // "Armenian"
console.log(str.slice(8, 19)); // "JavaScript"
console.log(str.slice(9, -10)); // "JavaScript"

Կարևոր է հիշել, որ String տիպը JavaScript-ում ՉԻ ԿԱՐՈՂ ՓՈՓՈԽՄԱՆ ԵՆԹԱՐԿՎԵԼ։ Այն ինչպես ստեղծեցինք, այնպես էլ ընդմիշտ կմնա։ Բոլոր այս 3 մեթոդները ՎԵՐԱԴԱՐՁՆՈՒՄ ԵՆ ՆՈՐ String, և ՓՈՓՈԽՈՒԹՅԱՆ ՉեՆ ԵՆԹԱՐԿՈՒՄ ՀԻՆԸ։ Հավանաբար կարող է հարց առաջանալ, թե այս մեթոդներից որն օգտագործել, որն է այն մեթոդը, որն ունիվերսալ է և ճկուն, համեմատած մնացած մեթոդների հետ։

Իհարկե slice-ը։ Թեև substr-ը նույնպես հրաշալի մեթոդ է, և որոշ դեպքերում կարող է հարմար լինել, այն ունի մեկ թերություն՝ նկարագրված չէ ECMAScript ստանդարտում և ստեղծվել է բրաուզերային միջավայրում կիրառելու համար։ Այսինքն կա հավանականություն, որ ոչ բրաուզերային միջավայրում այն կարող է չաջակցվել։

slice-ն ավելի կարճ է, ճկուն, և բոլոր միջավայրերում հրաշալի աշխատում է։ Այնպես որ կարիք չկա հիշելու մյուս երկուսի աշխատանքի սկզբունքները, իսկ եթե կարիք առաջանա էլ, կարող եք ուղղակի նայել այստեղ կամ MDN-ում։