Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Посимвольное сравнение чисел (https://javascript.ru/forum/misc/51694-posimvolnoe-sravnenie-chisel.html)

deep4565 16.11.2014 09:42

Посимвольное сравнение чисел
 
Добрый день!

на delphi я писал код примерно такой (посимвольная проверка введенных чисел):

s:string;
if (s[1]=s[2]) and (s[2]=s[3]);
then showmessage ('ошибка ввода');
else showmessage ('нет ошибки');
проверка при нажатии на btn

Помогите переписать этот код на javascript.
Спасибо!

danik.js 16.11.2014 11:23

Цитата:

Сообщение от deep4565
s:string;

var s;

В JavaScript динамическая типизация. Поэтому при объявлении переменной не требуется указывать тип. Просто присваивай ей значение любого типа, какой тебе нужен. Например:
var s;
s = 'строка';


Цитата:

Сообщение от deep4565
s[1]

В JS точно такой же синтаксис обращения к символам строки (и элементам массива). Только нумерация начинается не с единицы, а с нуля, как и в большинстве языков программирования.

Цитата:

Сообщение от deep4565
s[1]=s[2]

В JS, как и в большинстве других языков, оператор сравнения выглядит как ==, потому как = - это оператор присваивания.

Цитата:

Сообщение от deep4565
and

К сожалению в JS нет ключевого слова and, вместо него используется && (как во всех C-подобных языках)
Цитата:

Сообщение от deep4565
showmessage

В браузер встроена функция alert для показа сообщений.

Цитата:

Сообщение от deep4565
if (..);
then [code1]
else [code2]


В C-подобных языках условия записываются как:
if (..)
  [code1]
else
  [code2]


Если код должен содержать несколько выражений (statement), то так:

if (..) {
  [code1]
} else {
  [code2]
}

bes 16.11.2014 12:04

в целом странно, что чел не решил эту задачу сам, введя соответствующий запрос в поисковик и прогуглив соответствующие операторы и конструкции (информация несекретная ;))

Цитата:

Сообщение от deep4565
на delphi я писал код примерно такой (посимвольная проверка введенных чисел):

s:string;
if (s[1]=s[2]) and (s[2]=s[3]);
then showmessage ('ошибка ввода');
else showmessage ('нет ошибки');

хотя возможно не странно, так как в целом не понятно, что делает этот код, приведи полный пример
предположим, есть строка '12345', то что ты проверяешь? что '1' == '2' и '2' == '3'?
а если проверка чисел, то зачем делать сравнение посимвольно, а не использовать, скажем, StrToInt?

хотя, в целом, ты сделал одну правильную вещь - предпринял уход с delphi :)

krutoy 16.11.2014 12:36

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)

deep4565 17.11.2014 09:25

<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 как это проделать?

danik.js 17.11.2014 12:31

Цитата:

Сообщение от deep4565
что не так?

Блядь все расписывал разжевывал, а ты даже не прочитал толком. Че за люди..
Цитата:

Сообщение от deep4565
var s;
if (s[0]==s[1] && s[1]==s[2] && s[2]==s[3] && s[4]==[5]&& s[6]==[7];

Ну и откуда в переменной, которой не назначено никакое значение возьмутся какие-то символы? Или делфи умеет читать мысли?
Цитата:

Сообщение от deep4565
т.е. сравнение символа строки с числом. в js как это проделать?

Бери да сравнивай. При сравнении операнды приведутся к одному типу автоматически.

alert(5 == '5');
alert(2 == '5');


Когда постишь код, жмякай кнопку

deep4565 18.11.2014 06:32

<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

kostyanet 18.11.2014 06:44

Цитата:

Сообщение от deep4565
т.е. сравнение символа строки с числом. в js как это проделать?

Да ему charCodeAt нужен походу.

danik.js 18.11.2014 09:46

Цитата:

Сообщение от deep4565
сообщение выходит без ввода данных в input id

Ну для начала, инпут станет объектом (узлом) в DOM-модели документа. Получить его (по id) можно так:
var input = document.getElementById('test');


Далее, ввод - это событие "input" (оно так называется). Самый простой способ (устаревший) навешать обработчик события:

input.oninput = function() {
    // этот код будет вызван всякий раз при вводе чего-либо в поле.
};


Современный вариант:

input.addEventListener('input', function() {
    // этот код будет вызван всякий раз при вводе чего-либо в поле.
});


Вместо события "input" можно использовать другое событие - "keyup" - опускание клавиши. Но клавиши - не единственный способ ввода в текстовое поле (не забываем про copy/paste и drag/drop).

Текущее значение инпута (строковое) доступно в свойстве input.value

deep4565 18.11.2014 12:04

<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>


Если все правильно понял, но так же не подтягивает.


Часовой пояс GMT +3, время: 16:56.