Перейти к содержимому

Как проверить на строку

  • автор:

Переменная является строкой (JavaScript)

Проверить является ли переменная строкой можно при помощи операторов typeof и instanceof . В первом случае проверяется скалярное значение, во втором если объект.

typeof и instanceof

Например есть переменная myVar, надо проверить является ли она строкой.

var myVar = «Привет, мир!»; if (typeof myVar === «string» || myVar instanceof String) < console.log("Это строка!"); >

Функция isString

Можно написать простую функцию bool isString(value) , которая на входе будет принимать проверяемую переменную и возвращать результат в булевом типе.

/** * Проверять, является ли переменная val строкой * @param val * @return */ function isString(val) < return (typeof val === "string" || val instanceof String); >var v1 = «First string»; var v2 = 2; var v3 = «Second string»; var v4 = 5.4; var v5 = String(«Third string»); var v6 = null; var v7 = new String(«Fourth string»); var v8 = [1, 2, 3]; var v9 = ; console.log(isString(v1));// true console.log(isString(v2));// false console.log(isString(v3));// true console.log(isString(v4));// false console.log(isString(v5));// true console.log(isString(v6));// false console.log(isString(v7));// true console.log(isString(v8));// false console.log(isString(v9));// false

✖ ❤ Мне помогла статья нет оценок
11354 просмотра 1 комментарий Артём Фёдоров 07 мая 2019

Категории

Читайте также

  • Как обрезать строку (JavaScript)
  • str_repeat (JavaScript)
  • str_pad (JavaScript)
  • Первую букву в верхний регистр (JavaScript)
  • Как узнать длину строки (JavaScript)
  • Преобразовать строку в число (PHP)
  • JavaScript md5
  • Многострочные переменные-строки (JavaScript)
  • JavaScript trim
  • Удалить все пробелы (JavaScript)
  • Первые N символов строки цифры (PHP)
  • Определить поискового бота (PHP)

Комментарии

Антон 18 апреля 2023 в 13:18

console.log(isString(v10));// true — ошибка

Как проверить строку на наличие определенных символов

Lorem ipsum dolor

Допустим , у вас есть некая строка: «Я люблю программирование». Неважно , как эта строка появилась. Вам нужно проверить строку на наличие символов «мм». Для этого в Java есть несколько способов, но самый простой и действенный — это применение метода «int indexOf(String sub)».

Например:

String s = “Я люблю программирование“, “мм“;

if (s.indexOf(sub) != -1)

//здесь прописывается действие, которое необходим о выполнить, если символы найдены

else

//здесь прописывается действие, если символы не найдены

В Java можно проверить строку на символы , применяя метод «contains», например:

String s = “Я люблю программирование“;

if (s.contains(“мм“))

//здесь описывается действие, которое необходимо выполнить

>

или вот так:

public static boolean contains(String str, String substr)

return str.contains(substr);

>

contains(“Я люблю программирование“, “мм“);

Как проверить строку на символы в Python

  • substring — символы/набор символов , которые необходимо разыскать в строке;
  • start — необязательно указывать ; если указать, тогда определяет , с какого символа начинать поиск;
  • end — необязательно указывать этот индекс ; если указать, тогда определяет , на каком символе окончит поиск.

Как проверить строку на символы в PHP

Самым простым способом проверить строку в PHP на символы является использование функции «strpos()». Данная функция вернет первое вхождение искомых символов в строке ; если их не будет, тогда она вернет «false».

Например:

$the_string = “Я люблю программирование.“;

$the_word = “люблю“;

$the_character = “мм“;

//проверяем , есть ли слово «люблю» в строке

if (strpos($the_string, $the_word) !== false)

echo `Слово “` .$the_word. `“ присутствует в строке.`;

// п роверяем , есть ли символы «мм» в строке

if (strpos($the_string, the_character) !== false)

echo ` Символы “`.the_character`“ присутствуют в строке.`

Если необходимо проверить строку на символы, но упуская значения регистра, тогда необходимо применять функцию «stripos()», которая работает так же, как и «strpos()».

Заключение

Проверить строку на символы можно в любом языке программирования, применяя внутренние инструменты языка. Сегодня мы привели самые легкие и быстрые способы, как осуществить проверку в 3-х языках. Необходимо отметить, что данные способы годятся для простого поиска. Если необходим более сложный поиск, тогда имеет смысл использовать регулярные выражения, но они работают намного медленнее. О регулярных выражениях мы поговорим в следующих статьях.

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Как я могу проверить есть ли в строке python определенные символы

Мне необходимо проверить строку ‘gkegfemeeуууее&@(‘ на то, что есть ли в ей только русские и латинские символы, без учета регистра, если в строке есть какие-то прочие символы — тогда ответ должен быть True , иначе False Сделать это необходимо как можно короче, но чтобы при этом для меня было понятно, использование регулярок — запрещено.

Отслеживать
48.6k 17 17 золотых знаков 56 56 серебряных знаков 100 100 бронзовых знаков
задан 5 сен 2021 в 17:00
869 3 3 золотых знака 8 8 серебряных знаков 30 30 бронзовых знаков
А кто запретил Вам использовать регулярки?
5 сен 2021 в 17:03
Вот как буду понимать, тогда и будет разрешение 🙂
5 сен 2021 в 17:03

6 ответов 6

Сортировка: Сброс на вариант по умолчанию

Хоть и без регулярки, но попробую объяснить, что это достаточно просто и ничего страшного в регулярных выражениях нет.

import re regex = "^[a-zA-Zа-яА-ЯёЁ]+$" string = "gkegfemeeуууее&@(" pattern = re.compile(regex) print(pattern.search(string) is not None) # False 

Пример выведет False для строки gkegfemeeуууее&@( , т.к. она не соответствует нашему регулярному выражению. Разберём нашу регулярку:

  • ^ -> Указывает на начало строки
  • [] -> Тут указывает список из разрешённых символов (должно быть что-то из списка)
  • a-z -> Все латинские символы в нижнем регистре
  • A-Z -> Все латинские символы в верхнем регистре
  • а-я -> Все символы кириллицы в нижнем регистре
  • А-Я -> Все символы кириллицы в верхнем регистре
  • ёЁ -> Особенные символы русского языка 🙂
  • + -> Указывает на то, что строка продолжается и может иметь больше одного символа
  • $ -> Указываем на конец строки

typeof

Оператор typeof возвращает строку, указывающую тип операнда.

Интерактивный пример

Синтаксис

Операнд следует за оператором typeof :

typeof operand

Параметры

operand является выражением, представляющим объект или примитив, тип которого должен быть возвращён.

Описание

В следующей таблице приведены возможные возвращаемые значения typeof . Дополнительная информация о типах и примитивах находится на странице структуры данных JavaScript.

Type Result
Undefined «undefined»
Null «object» (смотрите ниже)
Boolean «boolean»
Number «number»
String «string»
Symbol (новый тип из ECMAScript 2015) «symbol»
Host object (определено JS окружением) Зависит от реализации
Function object (реализует [[Call]] в терминах ECMA-262) «function»
Любой другой тип «object»

Примеры

// Числа typeof 37 === "number"; typeof 3.14 === "number"; typeof 42 === "number"; typeof Math.LN2 === "number"; typeof Infinity === "number"; typeof NaN === "number"; // несмотря на то, что это "Not-A-Number" (не число) typeof Number(1) === "number"; // никогда не используйте эту запись! // Строки typeof "" === "string"; typeof "bla" === "string"; typeof "1" === "string"; // обратите внимание, что число внутри строки всё равно имеет тип строки typeof typeof 1 === "string"; // typeof всегда вернёт в этом случае строку typeof String("abc") === "string"; // никогда не используйте эту запись! // Booleans typeof true === "boolean"; typeof false === "boolean"; typeof Boolean(true) === "boolean"; // никогда не используйте эту запись! // Символы typeof Symbol() === "symbol"; typeof Symbol("foo") === "symbol"; typeof Symbol.iterator === "symbol"; // Undefined typeof undefined === "undefined"; typeof declaredButUndefinedVariable === "undefined"; typeof undeclaredVariable === "undefined"; // Объекты typeof  a: 1 > === "object"; // используйте Array.isArray или Object.prototype.toString.call // чтобы различить обычные объекты и массивы typeof [1, 2, 4] === "object"; typeof new Date() === "object"; // То что ниже приводит к ошибкам и проблемам. Не используйте! typeof new Boolean(true) === "object"; typeof new Number(1) === "object"; typeof new String("abc") === "object"; // Функции typeof function () > === "function"; typeof class C > === "function"; typeof Math.sin === "function"; 

null

// Это было определено с рождения JavaScript typeof null === "object"; 

В первой реализации JavaScript значения были представлены парой тип тега и значение. Тип тега для объектов равнялся 0. null был представлен как нулевой указатель (0x00 в большинстве платформ). Следовательно, тип тега для null равнялся нулю, поэтому возвращаемое значение typeof является фиктивным. (подробнее)

Исправление было предложено в ECMAScript (через отключение), но было отклонено. Это привело бы к тому, что typeof null === ‘null’ .

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

// Все функции-конструкторы, созданные с помощью 'new', будут иметь тип 'object' var str = new String("String"); var num = new Number(100); typeof str; // Вернёт 'object' typeof num; // Вернёт 'object' // Но существует исключение для конструктора Function var func = new Function(); typeof func; // Вернёт 'function' 

Регулярные выражения

Вызываемые регулярные выражения были нестандартным дополнением в некоторых браузерах.

typeof /s/ === "function"; // Chrome 1-12 Не соответствует ECMAScript 5.1 typeof /s/ === "object"; // Firefox 5+ Соответствует ECMAScript 5.1 

Ошибки, связанные с временными мёртвыми зонами

До ECMAScript 2015, гарантировалось, что оператор typeof вернёт строку для любого операнда, с которым он был вызван. Это изменилось после добавления не поднимающихся объявлений let and const с блочной областью видимости. Теперь, если переменные объявлены с помощью let и const , и для них вызывается typeof в блоке объявления переменных, но до объявления, то выбрасывается ReferenceError . Поведение отличается от необъявленных переменных, для которых typeof вернёт ‘undefined’. Переменные с блочной областью видимости находятся в «временной мёртвой зоне», которая длится от начала блока до момента объявления переменных. В этой зоне попытка доступа к переменным выбрасывает исключение.

typeof undeclaredVariable === "undefined"; typeof newLetVariable; let newLetVariable; // ReferenceError typeof newConstVariable; const newConstVariable = "hello"; // ReferenceError 

Исключения

Во всех текущих браузерах существует нестандартный host-объект document.all , который имеет тип Undefined.

typeof document.all === "undefined"; 

Хотя спецификация разрешает собственные имена типов для нестандартных экзотических объектов, требуется чтобы эти имена отличались от предопределённых. Ситуация, когда document.all имеет тип undefined должна рассматриваться как исключительное нарушение правил.

Спецификации

Specification
ECMAScript Language Specification
# sec-typeof-operator

Совместимость с браузерами

BCD tables only load in the browser

IE-специфичные замечания

В IE 6, 7 и 8 многие host-объекты являются объектами, но не функциями. Например:

typeof alert === "object"; 

Смотрите также

  • instanceof
  • Why typeof is no longer «safe»

Found a content problem with this page?

  • Edit the page on GitHub.
  • Report the content issue.
  • View the source on GitHub.

This page was last modified on 7 авг. 2023 г. by MDN contributors.

Your blueprint for a better internet.

MDN

Support

  • Product help
  • Report an issue

Our communities

Developers

  • Web Technologies
  • Learn Web Development
  • MDN Plus
  • Hacks Blog
  • Website Privacy Notice
  • Cookies
  • Legal
  • Community Participation Guidelines

Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2024 by individual mozilla.org contributors. Content available under a Creative Commons license.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *