JavaScript | Функция проверки, что строка начинается на что-то — efim360.ru

JavaScript | Функция проверки, что строка начинается на что-то

Напишем функцию на JavaScript, которая возвращает истину (true), если строка начинается на передаваемое в неё значение или ложь (false), если строка не начинается на передаваемое в неё значение. Мы напишем своё собственное решение, потому что в стандартном методе startsWith() есть некоторые неудобные нюансы работы.

Функция будет принимать 2 параметра:

  1. Главная строка, по которой хотим искать
  2. Начальная строка, на которую должна начинаться Главная строка

Функция будет возвращать логический тип.

// JavaScript | Функция проверки, что строка начинается на что-то

function does_the_string_start_with_something (mainstr, startstr) {

    if(mainstr.constructor.name=='String' && startstr.constructor.name=='String'){

        if(mainstr.length<startstr.length){return false}

        if(mainstr.match(RegExp(`^${startstr}`))){return true}else{return false}

    }else{return}

}

В теле функции выполняется проверка на принадлежность обоих параметров к классу String. Если хотя бы один не String, то функция завершится без возвращаемого значения. Эта проверка защищает функцию от ошибки вычислений и падения приложения. Если будет передан, например массив, то функция не вернёт логический тип.

Также выполняется проверка длин строк. Если Главная строка короче Начальной строки, то возвращается false. По природе Главная строка не может быть короче Начальной строки.

И третья проверка - это созданное в конструкторе RegExp() - регулярное выражение. Метод match() попытается сопоставить строку mainstr по регулярному выражению. Метод match() возвращает логический тип.

Сопоставление двух строк лучше всего доверить регулярному выражению и его шаблону сопоставления.

 

Пример работы функции does_the_string_start_with_something()

does_the_string_start_with_something([],[])
undefined

does_the_string_start_with_something('','')
true

does_the_string_start_with_something('qwertyasdfg','qwe')
true

does_the_string_start_with_something('qwertyasdfg','asd')
false

does_the_string_start_with_something('qwe','qwertyasdfg')
false

 

Скриншот из браузера Google Chrome:

Функция проверки, что строка начинается на что-то. Примеры работы в JavaScript
Функция проверки, что строка начинается на что-то. Примеры работы в JavaScript

 

Дополнительный метод для класса String

Чтобы нашей функцией было удобно пользоваться, мы можем расширить стандартный набор методов для экземпляров класса String при помощи свойства prototype.

Для большего удобства назовём метод start(). В самом коде будет выглядеть короче.

// Дополнительный метод start() для класса String в JavaScript

String.prototype.start = function(startstr){

    if(startstr.constructor.name=='String'){

        if(this.length<startstr.length){return false}

        if(this.match(RegExp(`^${startstr}`))){return true}else{return false}

    }else{return}

}

 

Пример работы дополнительного метода start()

'qwertyasdfg'.start('qwe')
true

'qwe'.start('qwertyasdfg')
false

'qwe'.start([])
undefined

Скриншот из браузера Google Chrome:

Дополнительный метод для класса String в JavaScript который говорит начинается ли строка на что-то
Дополнительный метод для класса String в JavaScript который говорит начинается ли строка на что-то

 

Информационные ссылки

Стандарт ECMAScript - https://tc39.es/ecma262/multipage/