Переменная является строкой (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
✖ ❤ Мне помогла статья нет оценок
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 — ошибка
Как проверить строку на наличие определенных символов
![]()
Допустим , у вас есть некая строка: «Я люблю программирование». Неважно , как эта строка появилась. Вам нужно проверить строку на наличие символов «мм». Для этого в 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.