Посимвольное сравнение чисел
Добрый день!
на delphi я писал код примерно такой (посимвольная проверка введенных чисел): s:string; if (s[1]=s[2]) and (s[2]=s[3]); then showmessage ('ошибка ввода'); else showmessage ('нет ошибки'); проверка при нажатии на btn Помогите переписать этот код на javascript. Спасибо! |
Цитата:
var s; В JavaScript динамическая типизация. Поэтому при объявлении переменной не требуется указывать тип. Просто присваивай ей значение любого типа, какой тебе нужен. Например: var s; s = 'строка'; Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
В C-подобных языках условия записываются как: if (..) [code1] else [code2] Если код должен содержать несколько выражений (statement), то так: if (..) { [code1] } else { [code2] } |
в целом странно, что чел не решил эту задачу сам, введя соответствующий запрос в поисковик и прогуглив соответствующие операторы и конструкции (информация несекретная ;))
Цитата:
предположим, есть строка '12345', то что ты проверяешь? что '1' == '2' и '2' == '3'? а если проверка чисел, то зачем делать сравнение посимвольно, а не использовать, скажем, StrToInt? хотя, в целом, ты сделал одну правильную вещь - предпринял уход с delphi :) |
str1="12345" str2="11145" check=function(str){ if(str[0]===str[1]&&str[1]===str[2])return alert("YES"); alert("NO") } check(str1) check(str2) |
<input id="test" type="text" />
<script> var s; if (s[0]==s[1] && s[1]==s[2] && s[2]==s[3] && s[4]==[5]&& s[6]==[7]; then alert ("message1") else alert ("message2"); </script> что не так? 2) в делфи можно было: var x: integer; x:=5; if (s[1]=inttostr(x))...... т.е. сравнение символа строки с числом. в js как это проделать? |
Цитата:
Цитата:
Цитата:
alert(5 == '5'); alert(2 == '5'); Когда постишь код, жмякай кнопку ![]() |
<input id="test" type="text" /> <script> var s = 'test' if (s[0]==s[1] && s[1]==s[2] && s[2]==s[3] && s[3]==s[4] && s[4]==s[5]){ alert ("message1"); } else if (s[0]==s[2] && s[2]==s[3] && s[4]==s[5] && s[5]==s[6]&& s[6]==s[7]){ alert ("message2"); } </script> сообщение выходит без ввода данных в input id |
Цитата:
|
Цитата:
var input = document.getElementById('test'); Далее, ввод - это событие "input" (оно так называется). Самый простой способ (устаревший) навешать обработчик события: input.oninput = function() { // этот код будет вызван всякий раз при вводе чего-либо в поле. }; Современный вариант: input.addEventListener('input', function() { // этот код будет вызван всякий раз при вводе чего-либо в поле. }); Вместо события "input" можно использовать другое событие - "keyup" - опускание клавиши. Но клавиши - не единственный способ ввода в текстовое поле (не забываем про copy/paste и drag/drop). Текущее значение инпута (строковое) доступно в свойстве input.value |
<input id="test" type="text" /> <script> var input = document.getElementById('test'); input.addEventListener('input', function() { var s = 'test' if (s[3]==s[4] && s[4]==s[5] && s[5]==s[6] && s[6]==s[7] && s[7]==s[8]){ alert ("message1"); } else if (s[3]==s[4] && s[4]==s[5] && s[5]==s[6] && s[6]==s[7] && s[7]!=s[8]){ alert ("message2"); )}; } </script> Если все правильно понял, но так же не подтягивает. |
Да заеб*ло уже. Ты опять через строку читаешь?
Цитата:
|
А еще там синтаксическая ошибка в 12-13 строках.
|
Цитата:
|
<script> var s = prompt('Nomer', ''); if (s == null) { alert('Проверка отменена'); } else if ((s[0]==s[1])&& (s[1]==s[2])&& (s[2]==s[3])&&(s[3]==s[4])&&(s[4]==s[5])) { alert('message1'); } else if ((s[0]!=s[1])&& (s[1]!=s[2])&& (s[2]==s[3])&&(s[3]==s[4])&&(s[4]==s[5])){ alert('message2'); } else { alert('message3'); } </script> Почему не сравнивает? |
Может не так сравниваются символы в JS?
|
function sameChars(chars) { return Array.prototype.every.call(chars, function(element, index, array) { return element === array[0]; }); } alert( [sameChars('aaa'), sameChars('aab')] ); var re = /^(.)\1*$/; alert( [re.test('aaa'), re.test('aab')] ); |
((s[0]==s[1])&& (s[1]==s[2])&& (s[2]==s[3])&&(s[3]==s[4])&&(s[4]==s[5]))
а так невозможно сравнить? |
К символу строки по индексу обращаться можно. Сравнивать символы между собой можно. Все можно.
|
Но твой код будет работать только для строк длиной в 6 символов.
|
Почему так не сравнивает?
<script> var s = prompt('Nomer', ''); if (s == null) { alert('Проверка отменена'); } else if ((s[0]==s[1])&& (s[1]==s[2])&& (s[2]==s[3])&&(s[3]==s[4])&&(s[4]==s[5])) { alert('message1'); } else if ((s[0]!=s[1])&& (s[1]!=s[2])&& (s[2]==s[3])&&(s[3]==s[4])&&(s[4]==s[5])){ alert('message2'); } else { alert('message3'); } </script> |
deep4565,
а что именно не сравнивает? вторая ветка работает нормально, дальше не смотрел var s = "aaaaaa" if (s == null) { alert('Проверка отменена'); } else if ((s[0]==s[1])&& (s[1]==s[2])&& (s[2]==s[3])&&(s[3]==s[4])&&(s[4]==s[5])) { alert('message1'); } else if ((s[0]!=s[1])&& (s[1]!=s[2])&& (s[2]==s[3])&&(s[3]==s[4])&&(s[4]==s[5])){ alert('message2'); } else { alert('message3'); } ЗЫ третья тоже работает var s = "xyzzzz" if (s == null) { alert('Проверка отменена'); } else if ((s[0]==s[1])&& (s[1]==s[2])&& (s[2]==s[3])&&(s[3]==s[4])&&(s[4]==s[5])) { alert('message1'); } else if ((s[0]!=s[1])&& (s[1]!=s[2])&& (s[2]==s[3])&&(s[3]==s[4])&&(s[4]==s[5])){ alert('message2'); } else { alert('message3'); } |
Цитата:
if (s[0] == undefined ) Цитата:
|
Цитата:
if(!s) |
как задать значение s юзеру?
var s = "xyzzzz", а не так программно. |
deep4565,
var s = prompt("", "") |
Цитата:
<script> var s = prompt("",""); if (s == null) { alert('Проверка отменена'); } else if ((s[0]==s[1])&& (s[1]==s[2])&& (s[2]==s[3])&&(s[3]==s[4])&&(s[4]==s[5])) { alert('message1'); } else if ((s[0]!=s[1])&& (s[1]!=s[2])&& (s[2]==s[3])&&(s[3]==s[4])&&(s[4]==s[5])){ alert('message2'); } else { alert('message3'); } </script> |
сдаётся мне, что здесь deep trololo :)
|
Цитата:
|
Спасибо всем, разобрался.
|
Часовой пояс GMT +3, время: 16:38. |