Когато пиша в javascript, често трябва да се позовавам на търсачки, за да се изясни синтаксиса на методите (и реда, дефиницията на аргументите), работещи с низове.

В тази статия ще се опитам да дам примери и описания на най-често срещаните javascript методисвързани със струни. Най-популярните методи са разположени в горната част на статията за удобство.

Преобразуване в низ

Можете да преобразувате число, булево значение или обект в низ.

var myNumber = 24; // 24 var myString = myNumber.toString(); // "24"

Можете също да направите това с функцията string().

var myNumber = 24; // 24 var myString = String(myNumber); // "24"

Никълъс Закас казва: "Ако не сте сигурни за стойността (нулева или недефинирана), използвайте функцията String(), тъй като тя връща низ, независимо от типа на променливата."

недефиниранозначава, че не е присвоена стойност на променливата, a нула, - че му е присвоена нулевата стойност (може да се каже, че null е дефиниран като празен обект).

Разделяне на низ на поднизове

За да разделите низ на масив от поднизове, можете да използвате метода split():

Var myString = "coming,separt,at,the,commas"; var substringArray = myString.split(","); // ["coming", "apart", "at", "the", "commas"] var arrayLimited = myString.split(",", 3); // ["идва", "отделно", "при"]

Както показва последният ред, стойността на втория незадължителен аргумент определя броя на елементите в върнатия масив.

Вземете дължина на низа

Със свойството length можете да намерите броя на уникод символите в низ:

Var myString = "Ти си доста добър герой."; var stringLength = myString.length; // 25

Дефиниране на подниз в низ

Има два начина да постигнете това:

Използвайте indexOf():

Var stringOne = "Джони Уолдо Харисън Уолдо"; var wheresWaldo = stringOne.indexOf("Waldo"); // 7

Методът indexOf() търси подниз (първият предаден аргумент) в низ (от началото на низа) и връща позицията на първия знак, от който започва появата на подниза в низа.

Използвайте lastIndexOf():

Var stringOne = "Джони Уолдо Харисън Уолдо"; var wheresWaldo = stringOne.lastIndexOf("Waldo"); // 22

Методът lastIndexOf() прави абсолютно същото, с изключение на това, че търси последния подниз в низа.

Ако поднизът не бъде намерен, и двата метода връщат -1. Вторият незадължителен аргумент указва позицията в низа, където искате да започнете търсенето. Така че, ако вторият аргумент на метода indexOf() е 5, тогава търсенето ще започне от 5-ия знак и 0-4 знака ще бъдат игнорирани. За lastIndexOf(), също ако вторият аргумент е 5, търсенето ще започне отзад, като знаците 6 и по-горе се игнорират.

Как да замените част от низ

За да замените част (или дори целия) низ, използвайте метода replace().

Var slugger = "Джош Хамилтън"; var betterSlugger = slugger.replace("h Hamilton", "e Bautista"); console.log(betterSlugger); // "Хосе Баутиста"

Първият аргумент съдържа частта от подниза, която трябва да бъде заменена; вторият аргумент е низът, който ще заеме мястото на подниза, който ще бъде заменен. Само първото копие на подниза ще бъде заменено.

За да замените всички срещания на подниз, използвайте регулярен изразс флага "g".

Var myString = "Тя продава автомобилни черупки на автомобилния бряг"; var newString = myString.replace(/automotive/g, "море"); конзолен дневник (нов низ); // "Тя продава морски раковини на морския бряг"

Вторият аргумент може да включва подниза или функцията за замяна.

Намерете герой на дадена позиция

За да разберете кой символ е на дадена позиция, можете да използвате метода charAt():

Var myString = "Птици от пера"; var whatsAtSeven = myString.charAt(7); // "f"

Както често се случва в JavaScript, първата позиция се брои от 0, а не от 1.

Като алтернатива можете да използвате метода charCodeAt(), но вместо самия знак ще получите неговия код.

Var myString = "Птици от пера"; var whatsAtSeven = myString.charCodeAt(7); // "102" var whatsAtEleven = myString.charCodeAt(11); // "70"

Имайте предвид, че кодът за главна буква (позиция 11) е различен от кода за същата буква, но с малки букви (позиция 7).

конкатенация на низове в javascript

В по-голямата си част ще използвате оператора (+) за свързване на низове. Но можете също да свържете низове с помощта на метода concat().

Var stringOne = "Knibb High football"; var stringTwo = stringOne.concat("правила."); // "Knibb High футболни правила"

Множество низове могат да бъдат предадени на concat() и те ще се появят в резултантния низ в реда, в който са били добавени към метода concat().

VarstringOne = "Knibb"; var stringTwo = "Високо"; var stringThree = "футбол"; var stringFour = "правила."; var finalString = stringOne.concat(stringTwo, stringThree, stringFour); console.log(finalString); // "Knibb високи футболни правила."

Част от низ (извличане на подниз в javascript)

Има три различни начинисъздайте нов низ чрез "издърпване" на част от подниз от съществуващ низ.

Използване на slice():

Var stringOne = "abcdefghijklmnopqrstuvwxyz"; var stringTwo = stringOne.slice(5, 10); // "fghij"

Използване на substring():

Var stringOne = "abcdefghijklmnopqrstuvwxyz"; var stringTwo = stringOne.substring(5, 10); // "fghij"

И за двата метода (slice() и substring()), първият аргумент е позицията на знака, в която започва поднизът (броейки от 0), вторият аргумент е позицията на знака, в която завършва поднизът, като знакът е указан в вторият аргумент не е включен във върнатия подниз.

Използване на substr():

Var stringOne = "abcdefghijklmnopqrstuvwxyz"; var stringTwo = stringOne.substr(5, 10); // "fghijklmno"

За метода substr, първият аргумент също указва позицията на знака, от която започва поднизът. Вторият аргумент не е задължителен. Но в същото време вторият аргумент указва броя знаци, които трябва да бъдат включени в подниза, започвайки от позицията, която вече сме дефинирали в първия аргумент. Тази техника е добре илюстрирана в примера по-горе.

Преобразувайте низ в малки или главни букви в javascript

Има четири метода за извършване на необходимите трансформации. Две за преобразуване на символи от низ Главна буква.

Var stringOne = "Говори, не те чувам."; var stringTwo = stringOne.toLocaleUpperCase(); // "ГОВОРИ, НЕ МОГА ДА ТЕ ЧУВАМ" var stringThree = stringOne.toUpperCase(); // "ГОВОРИ ГОЛЕ, НЕ МОГА ДА ТЕ ЧУВАМ"

И две за преобразуване на низа в малки букви:

Var stringOne = "НЕ ТРЯБВА ДА ВИКАТЕ"; var stringTwo = stringOne.toLocaleLowerCase(); // "не трябва да викате" var stringThree = stringOne.toLowerCase(); // "не е нужно да крещиш"

По принцип няма разлика между локален метод и нелокален метод, но "за някои езици, като например турски, чиито букви не следват регистъра на системата Unicode, последствията от използването на нелокален метод може да е различен." Затова следвайте следното правило: "ако не знаете езика, на който ще работи кодът, по-безопасно е да използвате локални методи."

Съвпадение на шаблони в javascript

Можете да проверите наличието на модел в низ, като използвате 2 метода.

Методът match() се извиква на обекта string и регулярен израз се предава като аргумент на метода match().

Var myString = "Колко дърва може да се патронник за дърво"; var myPattern = /.ood/; var myResult = myString.match(myPattern); // ["дърво"] var patternLocation = myResult.index; // 9 var originalString = myResult.input // "Колко дърво може да патронник за дърво"

И методът exec() се извиква на обекта RegExp, низът се предава като аргумент:

Var myString = "Колко дърва може да се патронник за дърво"; var myPattern = /.huck/; var myResult = myPattern.exec(myString); // ["chuck"] var patternLocation = myResult.index; // 27 var originalString = myResult.input // "Колко дърво може да се патронник за дърво"

И двата метода връщат първото съвпадение. Ако не бъде намерено съвпадение, ще бъде върнато NULL. Ако регулярният израз има флага " g ", тогава като резултат ще бъде върнат масив, съдържащ всички съвпадения.

Можете също да използвате метода search(), който приема регулярен израз като аргумент и връща началната позиция на първия шаблон, който съвпада.

Var myString = "Предполагам"; var patternLocation = myString.search(/ume/); // 3

Ако не бъде намерено съвпадение, методът ще върне -1.

Сравняване на два низа за последващо сортиране

За да сравните два низа въз основа на реда на сортиране на локала, можете да използвате метода localeCompare. Методът localeCompare връща три възможни стойности.

MyString = "пиле"; var myStringTwo = "яйце"; var whichCameFirst = myString.localeCompare(myStringTwo); // -1 (с изключение на Chrome, който връща -2) whichCameFirst = myString.localeCompare("chicken"); // 0 whichCameFirst = myString.localeCompare("ябълка"); // 1 (Chrome връща 2)

Както е показано по-горе, ще бъде върната отрицателна стойност, ако оригиналният низ е сортиран преди аргумента на низа, ако аргументът на низа е сортиран след оригиналния низ, се връща +1. Ако се върне нулева стойност, двата низа са еквивалентни.

Когато пишете JavaScript, много често ви се налага да сърфирате в интернет в търсене на информация за синтаксиса и параметрите на методите, които работят с низове.

Прочетох много статии за работа с низове. Тази публикация ще покаже примери и кратки описаниянай-разпространените методи за работа с низове. Опитах се да поставя най-често срещаните методи в горната част за бърза справка.

Разбира се, повечето опитни разработчици вече са доста запознати с много от методите, но мисля, че това добър списъкза начинаещи, за да разберат набора от техники, които могат да помогнат за извършването на сложни операции с прости средства.

Преобразуване в низ

Можете да конвертирате число, булев израз или обект в низ:

var myNumber = 24; // 24 var myString = myNumber.toString(); // "24"

Можете да го направите по същия начин с низ ():

var myNumber = 24; // 24 var myString = String(myNumber); // "24"

Ако не сте сигурни, че стойността не е нулаили недефиниран, можеш да използваш низ (), който винаги връща низ, независимо от типа стойност.

Разделяне на низ на поднизове

За да разделите низове в масив от поднизове, можете да използвате метода разделяне():

Var myString = "coming,separt,at,the,commas"; var substringArray = myString.split(","); // ["coming", "apart", "at", "the", "commas"] var arrayLimited = myString.split(",", 3); // ["идва", "отделно", "при"]

Както можете да видите в последния ред, вторият параметър на функцията е ограничението за броя на елементите, които ще бъдат в крайния масив.

Получаване на дължината на низ

За да намерим колко знака има в низ, използваме свойството дължина:

Var myString = "Ти си доста добър герой."; var stringLength = myString.length; // 25

Намиране на подниз в низ

Има два метода за търсене на подниз:

Използване индекс на():

Var stringOne = "Джони Уолдо Харисън Уолдо"; var wheresWaldo = stringOne.indexOf("Waldo"); // 7

индекс на()методът започва да търси подниз от началото на низа и връща позицията на началото на първото срещане на подниза. В този случай това е номер 7.

Използване lastIndexOf():

Var stringOne = "Джони Уолдо Харисън Уолдо"; var wheresWaldo = stringOne.lastIndexOf("Waldo"); // 22

Методът връща началната позиция на последното срещане на подниза в низа.

И двата метода връщат -1, ако поднизът не е намерен, и двата приемат незадължителен втори аргумент, указващ позицията в низа, където искате да започнете търсенето. Така, ако вторият аргумент е "5", индекс на()започва да търси от знак 5, като игнорира знаци 0-4, докато lastIndexOf()започва да търси от знак 5 и се връща назад, като игнорира знаци 6 и след това.

Замяна на подниз

За да замените срещане на подниз в низ с друг подниз, можете да използвате замени():

Var slugger = "Джош Хамилтън"; var betterSlugger = slugger.replace("h Hamilton", "e Bautista"); console.log(betterSlugger); // "Хосе Баутиста"

Първият аргумент е това, което искате да замените, а вторият аргумент е нов низ. Функцията замества само първото появяване на подниз в низ.

За да замените всички срещания, трябва да използвате регулярен израз с глобален флаг:

Var myString = "Тя продава автомобилни черупки на автомобилния бряг"; var newString = myString.replace(/automotive/g, "море"); конзолен дневник (нов низ); // "Тя продава морски раковини на морския бряг"

Вторият аргумент може да включва специален шаблон или функция. Повече подробности можете да прочетете.

Вземете символ на дадена позиция в низ

Можем да получим героя с помощта на функцията charAt():

Var myString = "Птици от пера"; var whatsAtSeven = myString.charAt(7); // "f"

Както често се случва в JavaScript, първата позиция в низ започва от 0, а не от 1.

Като алтернативна функция можете да използвате charCodeAt()функция, която е кодът на символа.

Var myString = "Птици от пера"; var whatsAtSeven = myString.charCodeAt(7); // "102" var whatsAtEleven = myString.charCodeAt(11); // "70"

Обърнете внимание, че кодът за символа "F" (позиция 11) е различен от този за знака "f" (позиция 7).

Съединяване на низове

В повечето случаи можете да използвате оператора "+", за да свържете низове. Но можете също да използвате метода concate():

Var stringOne = "Knibb High football"; var stringTwo = stringOne.concat("правила."); // "Knibb High футболни правила"

По този начин можем да обединим много редове в един в реда, в който са написани:

VarstringOne = "Knibb"; var stringTwo = "Високо"; var stringThree = "футбол"; var stringFour = "правила."; var finalString = stringOne.concat(stringTwo, stringThree, stringFour); console.log(finalString); // "Knibb високи футболни правила."

Извличане на подниз

Има 3 начина да получите низ от част от друг низ:

Използвайки парче ():

Var stringOne = "abcdefghijklmnopqrstuvwxyz"; var stringTwo = stringOne.slice(5, 10); // "fghij"

Използвайки подниз():

Var stringOne = "abcdefghijklmnopqrstuvwxyz"; var stringTwo = stringOne.substring(5, 10); // "fghij"

И в двете функции първият параметър е символът, от който започва поднизът (започвайки от позиция 0), а вторият аргумент (незадължителен) е знаковата позиция, до която се връща поднизът. Примерът (5, 10) връща низа между позиция 5 и 9.

Използвайки substr():

Var stringOne = "abcdefghijklmnopqrstuvwxyz"; var stringTwo = stringOne.substr(5, 10); // "fghijklmno"

Първият аргумент е позицията на знака, от която започва новият ред, а вторият аргумент е броят знаци от началната позиция на новия ред. Тези. (5, 10) връща 10 знака, започвайки от позиция 5.

Преобразуване на низ в главни или малки букви.

Има 4 метода за превод. Първите 2 конвертират низа в главни букви:

Var stringOne = "Говори, не те чувам."; var stringTwo = stringOne.toLocaleUpperCase(); // "ГОВОРИ, НЕ МОГА ДА ТЕ ЧУВАМ" var stringThree = stringOne.toUpperCase(); // "ГОВОРИ ГОЛЕ, НЕ МОГА ДА ТЕ ЧУВАМ"

Другите 2 конвертират низа в малки букви:

Var stringOne = "НЕ ТРЯБВА ДА ВИКАТЕ"; var stringTwo = stringOne.toLocaleLowerCase(); // "не трябва да викате" var stringThree = stringOne.toLowerCase(); // "не е нужно да крещиш"

По-добре е да използвате методи "locale", като в различни места, например в Турция показването на регистрите не работи точно както сме свикнали и следователно резултатът може да е този, който искахме. Ако използвате методи "locale", тогава няма да има такива проблеми.

съвпадащ модел

Съвпадението на образец в низ може да се използва с 2 метода, които работят по различни начини.

Метод съвпада()прилага се към низ и приема регулярен израз като параметър:

Var myString = "Колко дърва може да се патронник за дърво"; var myPattern = /.ood/; var myResult = myString.match(myPattern); // ["дърво"] var patternLocation = myResult.index; // 9 var originalString = myResult.input // "Колко дърво може да патронник за дърво"

Метод exec()се прилага към обект с регулярен израз и приема низ като параметър:

Var myString = "Колко дърва може да се патронник за дърво"; var myPattern = /.huck/; var myResult = myPattern.exec(myString); // ["chuck"] var patternLocation = myResult.index; // 27 var originalString = myResult.input // "Колко дърво може да се патронник за дърво"

И двата метода връщат само първото съвпадение. Ако няма съвпадения, връща нула.

Можете също да използвате метода Търсене(), който приема регулярен израз и връща позицията на първото съвпадение на шаблона:

Var myString = "Предполагам"; var patternLocation = myString.search(/ume/); // 3

Ако няма съвпадения, се връща " -1 «.

Сравняване на два низа за сортиране

Можете да сравните 2 низа, за да определите кой е първи по азбучен ред. За целта използваме метода localeCompare(), който връща 3 възможни стойности:

Var myString = "пиле"; var myStringTwo = "яйце"; var whichCameFirst = myString.localeCompare(myStringTwo); // -1 (Chrome връща -2) whichCameFirst = myString.localeCompare("chicken"); // 0 whichCameFirst = myString.localeCompare("ябълка"); // 1 (Chrome връща 2)

Както е показано по-горе, отрицателно число се връща, ако аргументът низ идва след оригинален низ. Положително число, ако аргументът на низа е преди оригиналния низ. Ако се върне 0 означава, че низовете са равни.

За да проверите върнатата стойност, е по-добре да използвате if (result< 0), чем if (result === -1). Последнее не будет работать в Chrome.

Благодаря ви за вниманието, надявам се да сте научили много нови и интересни неща!

Автор на статията: Алекс. категория:
Дата на публикуване: 19.03.2013 г

Операндите на операторите за сравнение могат да бъдат числови и низови стойности. Низовете се сравняват въз основа на стандартния лексикографски ред при използване на Unicode.

Javascript позволява както строго сравнение, така и сравнение на гласове. За стриктно сравнение и двата операнда трябва да са от един и същи тип и:

  • Два низа са строго равни, ако се състоят от една и съща последователност от знаци
  • Две числа са строго равни, ако са равни в обичайния смисъл на думата. +0 е строго равно на -0.
  • NaN не е строго равно на нищо, включително NaN
  • Два булеви операнда са строго равни, ако и двата са истина или невярно
  • Два обектни операнда са строго равни, ако са препратки към един и същ общ обект
  • Null и Undefined са равни ==, но не са абсолютно равни ===

Следната таблица описва операторите за сравнение:

Оператор Описание Примери, които връщат true за var1=3, var2=4
Равно на (==) Ако двата операнда не са от един и същи тип, javascript извършва преобразуване на типа и сравнява стриктно. Ако някой от операндите е число или булева стойност, тогава операндите се преобразуват в числа; ако някой операнд е низ - вторият се преобразува в низ

3 == var1
"3" == var1
3 == "3"

Не е равно (!=) Връща true, ако операндите не са равни. Ако операндите имат различен тип, javascript конвертира.

var1 != 4
var1 != "5"

Строго равно (===) Връща true, ако операндите са строго равни (вижте по-горе), без преобразуване на типа.
Строго не е равно (!==) Връща true, ако операндите не са строго равни (вижте по-горе) или са от различни типове.

var2 !== 3
3 !== "3"

Още (>) Връща true, ако левият операнд е по-голям от десния.
По-голямо или равно (>=) Връща true, ако левият операнд е по-голям или равен на десния операнд.

var2 >= var1
var1 >= 3

По-малко (<) Връща true, ако левият операнд е по-малък от десния.
По-малко или равно (<=) Връща true, ако левият операнд е по-малък или равен на десния операнд.

var1<= var2
var2<= 5

Използване на оператори за сравнение

Стандартните оператори за равенство (== и !=) сравняват два операнда, независимо от техния тип. Строгото равенство (=== и !==) сравнява операнди от един и същи тип. Използвайте строго равенство, ако операндите трябва да бъдат от един и същи тип и стойност. В противен случай използвайте нормалните оператори за равенство, които ви позволяват да проверите равенството на операндите, дори ако те са от различни типове.

Когато преобразува типове, Javascript преобразува низ , номер , Булева стойности Обектпо следния начин:

  • Когато сравнявате число и низ, низът се преобразува в числова стойност. Javascript получава стойността на числото от литерала на низа: "123" == 123 .
  • Ако един от операндите е булев, той се преобразува в 1, ако е вярно, и в +0, ако е невярно
  • Ако даден обект се сравнява с число или низ, javascript се опитва да получи съответната стойност за обекта. Той преобразува обект в примитивна стойност, низ или число с помощта на методите valueOf и toString. Ако обектът не може да бъде преобразуван, се генерира грешка по време на изпълнение.

Ще ви предупредя веднага, да, статията е малко неправилна, добре дошли в коментарите, има добри разяснения).

Добър ден.

JavaScript има два подобни оператора: == и ===. Ако не познавате разликите им, това може да се превърне в куп грешки. Затова реших да отворя тази тема. Каква точно е разликата между == и ===, как работят, защо се случва това и как да избегнем грешки.

Операторът == сравнява за равенство, но === сравнява за идентичност. Предимството на оператора === е, че той не принуждава две стойности към един и същи тип. Ето защо се използва често.

Abc == недефиниран; // вярно, ако abc = undefined | null abc === недефиниран; // вярно - само ако abc = undefined!
abc == невярно; // вярно, ако abc = false | 0 | "" | abc === невярно; // вярно само ако abc = false!
В крайна сметка объркването на false и 0 (или "", или ) едва ли е много добро.

Разбира се:
5 === 5; // вярно вярно === вярно; // вярно "abc" === "abc"; // вярно

А сега един интересен пример.
5 == 5; // вярно 5 === 5; // вярно ново число(5) == 5; // вярно ново число(5) === 5; // невярно!

Защо се случва това? Да, всяко число е обект на клас Number. Но можете да представите число като цифра - някаква константа. Декларира се веднъж и винаги е идентичен на себе си. Но в същото време, декларирайки нов обект от класа Number - той е равен на него по стойност, но не е идентичен (тъй като това са два напълно различни обекта от класа Number).

Масиви / Обекти

Но за масиви и обекти и двата оператора работят по същия начин, сравнявайки за идентичност:
var a = (); a == (); // невярно a === (); // невярно a == a; // вярно a === a; // вярно

За да сравните масиви и обекти, можете да напишете специална функция:
функция isEq(a, b)( if(a == b) връща истина; for(var i in a)( if(!isEq(a[i], b[i])) връща false; ) for(var i in b)( if(!isEq(a[i], b[i])) return false; ) return true; )
Малко небрежен, два цикъла и около hasOwnPropertyзабравих; добре ще стане.

Това<-

Има още един подводен камък. Това е пропуск към това.
(function()( this == 5; // true this === 5; // false )).call(5);

Ето един такъв момент. Струва си да не забравяме за това.

Обща сума...

Е, сега си представете, че пишем своя собствена суперрамка, използвайки активно оператора === вместо == там просто защото е по-красив и някой намира няколко грешки при нас.
func(новоЧисло(5)); (функция()( функция(това); )).повикване(5);

Изглежда, че такива примери не са жизнеспособни? Моля те!

jQuery:
$.each(, function()( func(this); ));

Е, или искаше да разшири фигурата.
var Five = ново число (5); пет.a = 2; // Исках да разширя, но само 5 не се разшири // тук по някакъв начин използваме... func(Five);

Това е всичко, надявам се да е полезно за някого. Благодаря за вниманието.