Javascript вывести только цифры

Как вывести только цифры через document.write? JavaScript

Что нужно изменить, если было введено перед/после индексом/кса слова, то выводился только сам индекс в document.write, а не слова ( в смысле, как вывести только цифры через document.write )? Вопрос, над которым нужно подумать!

var personIndex = prompt(«Введите свой почтовый индекс»,»»);

function check(index)<
if(index.search(/^\d/) == -1)<
document.write(«Перед ведённым Вашим индексом \»» + index + «\» ничего не должно стоять, кроме индекса!»);
>
else if(index.search(/\d$/) == -1)<
document.write(«После ведённого Вашего индекса \»» + index + «\» ничего не должно стоять, кроме индекса!»);
>
else<
document.write(«Ваш индекс \»» + index + «\» успешно сохранён!»);
>
>

check(personIndex);

function setIndex(sign = 6) <
let index;
while (true) <
index = Number.parseInt(prompt(«Введите почтовый индекс»), 10);
if (!Number.isNaN(index)) <
index = Math.abs(index);
index = index.toString();
if (index.length === 6) <
break;
> else <
alert(«Индекс должен состоять из » + sign + » цифр!»)
>
> else <
alert(«Индекс должен содержать только цифры!»)
>
>
return index;
>

let index = setIndex();
document.write(index);

Чтобы убрать все символы кроме цифр, str = str.replace(/[^0-9]/g,»»);
А потом можно просто подсчитать количество символов в строке (чтобы их было 6) str.length

Источник

JavaScript | Как получить только цифры из строки?

Нам нужно из этой строки удалить все буквы и оставить только символы и цифры. Как это сделать?

В этом нам помогут регулярные выражения, классы символов и диапазоны классов. Все замены мы будем производить методом replace() .

CharacterClass, ClassRanges, NonemptyClassRanges - ECMAScript

Регулярному выражению будет присвоен глобальный флаг «g» для оценки всех повторений в строке. Заменять мы будем на пустую строку, что будет приравнено к удалению.

Получим слипшиеся цифры в виде одной строки:

только пробелы stroka.replace(/[^0-9, ]/g,"") пробелы и любые другие символы stroka.replace(/[^0-9,\s]/g,"")

В диапазон символов мы добавили пробел, поэтому нам вернулась строка с пробелами.

Альтернативный синтаксис

Можно использовать специальный экранированный класс символа (CharacterClassEscape), который обозначается буквой D .

Производства CharacterClassEscape - ECMAScript 2021

Он находит сопоставления в строке, которые НЕ равны набору из десяти цифр.

Семантика времени выполнения: компиляция в набор символов - производства

Он экранированный — это значит, что перед D мы должны будем поставить символ обратной косой черты \ . Ну и конечно это всё мы будем вводить внутри шаблона регулярного выражения, который обозначается границами в виде двух косых линий / / .

То есть мы можем найти в строке все места где символ не соответствует одному из: 0123456789

var stroka color: #993300;">Привет1274 ме234ня зо65вут 7987Ефим!"
stroka.replace(/\D/g,'') '1274234657987'

Источник

Как перевести строку в массив и оставить только цифры JavaScript?

Требуется все числа, которые встречаются в строке, поместить в отдельный целочисленный массив. Функция должна возвращать этот массив. Например: «djhf117 gf4 h008dbsh79».
При том что регулярные выражения нельзя использовать. Должно возвращать массив чисел [117,4,0,0,8,79] Пример: введите сюда код

let math = 'djhf123 gf6 h006dbsh90'; let getNumbers = function(string) < const numArray = []; // Возвращаемый результат let numStr = ''; // Аккумулятор для цифр for (let i = 0; i < string.length; i++) < if (!isNaN(Number(string[i]))) < // Если символ является числом if (string[i] !== '') < if (numStr === '0'); numStr += string[i]; // numArray.push(Number(numStr)) continue; >if (numStr === '0') < // Если это 0, сразу добавляем в массив if (string[i] !== ' ') numStr += string[i]; numArray.push(Number(numStr)) // Это не ноль, добавляем в //аккумулятор >else < string[i] += numStr; continue; >> else < if (numStr !== '') < // Если в аккумуляторе что то есть, пушим numArray.push(Number(numStr)); numStr = ''; // и зануляем аккумулятор >> > if (numStr !== '') numArray.push(Number(numStr)); return numArray; > console.log(getNumbers(math));

4 ответа 4

let math = 'djhf117 gf4 h008dbsh79'; function getNumbers() < const numArray = []; // Возвращаемый результат let numStr = ''; // Аккумулятор для цифр for (let i = 0; i < math.length; i++) < if (!isNaN(Number(math[i]))) < // Если символ является числом if (math[i] === '0') < // Если это 0, сразу добавляем в массив numArray.push(Number(math[i])) >else < // Это не ноль, добавляем в аккумулятор numStr += math[i] >> else < // Встретилось не число if (numStr.length) < // Если в аккумуляторе что то есть, пушим numArray.push(Number(numStr)); numStr = ''; // и зануляем аккумулятор >> > return numArray; > console.log(getNumbers())

@SwaDэтот ответ мне более понятен,хоть он и не доработан,но разве через parseInt не удобнее перебирать числа? Или каждому своё)

В ответах SwaD и MrYogurt есть проблемы с обработкой нуля. Если вместо последовательности ‘008’ будет последовательность ‘1008’ , то в результатах не увидите число 1008

Предлагаю очень простой алгоритм без этого недочёта (и как по мне с более читабельным кодом):

  1. Является ли символ числом или нет, я вместо преобразований, предлагаю использовать проверку с помощью кода символа строки. Код 48 отвечает за символ нуля, потому при проверке стоит строгое неравенство
  2. Объявляем массив, куда будем класть все числа
  3. Объявляем переменную, куда будем складывать по одному символы, отвечающие за цифры
  4. С помощью цикла for of перебираем по одному все символы строки: 4.1. Если символ — это цифра и не ноль, то добавляем его в переменную строку иначе переходим к следующему символу 4.2. Если символ — это ноль, то смотрим на пустоту переменной строки. Если она пустая, значит мы встретили одиночный ноль, а значит надо его просто добавить в массив. Если она не пустая, то значит мы встретили ноль, который является продолжением другого числа, значит надо добавить в переменную строку. Переходим к следующему символу 4.3. Если встретили не цифру, то смотрим на пустоту переменной строки, если она пустая, то переходим к следующему символу, а если не пустая, то добавляем в массив преобразовав его в число
  5. Если после окончания цикла у нас переменная строка осталась не пустой, то добавлем это в массив преобразовав его в число
  6. Возвращаем массив
const isDigitButNotZero = (symbol) => < const code = symbol.charCodeAt(0); return code >48 && code const getNums = (str) => < const nums = []; let num = ''; for (const symbol of str) < if (isDigitButNotZero(symbol)) < num += symbol; continue; >if (symbol === '0') < if (num !== '') num += symbol; else nums.push(+num); continue; >if (num !== '') < nums.push(+num); num = ''; >> if (num !== '') nums.push(+num); return nums; > const nums1 = getNums('djhf117 gf4 h008dbsh79'); const nums2 = getNums('djhf117 gf4 h1008dbsh79'); console.log(nums1); console.log(nums2);

Источник

нужно через forEach вывести только числа из массива

Если У Вас задача сделать это именно при помощи forEach, то элементы в новый массив нужно добавлять принудительно, поскольку forEach это метод, который просто проходит по массиву, ничего не возвращая.

let a3 = [2, "hello", 3, "hi", 4, "Mazai"]; let a3_res = []; a3.forEach(function(elem) < if(typeof elem == "number") a3_res.push(elem); >); console.log(a3_res); 
let a3 = [2, "hello", 3, "hi", 4, "Mazai"]; let a3_res = a3.filter(function(elem) < return typeof elem == "number"; >); console.log(a3_res);

у меня задача выглядит так (Дан массив a3 = [2, «hello», 3, «hi», 4, «Mazai»] — с помощью forEach переберите массив и создайте новый массив a3_res куда добавьте элементы данного массива являющиеся числом. Запускаться решение должно при вызове функции t3.)

@ВадимУманский вам тут продемонстрировали, что для определения числа вам не хватает typeof в сравнении.

let a3 = [ -Infinity, // минус бесконечность false, // не число NaN, // не число 2.4e-3, // 0.0024 '', // не число '-1', // не число null, // не число 0, // 0 Number, // не число '1', // не число undefined, // не число 2, // 2 "hello", // не число 3, // 3 Math.E, // 2.7 "hi", // не число 4, // 4 "Mazai", // не число '2e5', // не число Number(1), // 1 0xffff, // 65535 new Number, // 0 true, // не число Infinity, // плюс бесконечность, 23497654337n// не число ]; const a3_res = []; const isNum=v=>'[object Number]' == Object.prototype.toString.call(v) && ! isNaN(v); a3.filter(isNum) .map(v=>+v) .forEach(v=>a3_res.push(v)); a3_res.forEach(v=>console.log(v));

Связанные

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.7.21.43541

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Источник

Читайте также:  Java for cycle list
Оцените статью