Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   отлавливание русской буквы в строке (https://javascript.ru/forum/misc/45116-otlavlivanie-russkojj-bukvy-v-stroke.html)

EvgShaman 15.02.2014 12:51

отлавливание русской буквы в строке
 
Хочу выловить определённую букву, но вот незадача -
вот такой код:
var inp = document.getElementById("input");
var text = inp.value;
for (var i=0; i < text.length; i++)
{
	if (text[i]=='а') alert('!!!')
	else alert(text[i]);
}

первым alert'ом не находит букву, а вторым эту самую букву почему-то выводит. Если так находить например перенос строки '\n' или латинские буквы, то он спокойно вылавливается.
Подскажите, как нужно правильно сравнивать, чтобы выловить русские буквы!

ruslan_mart 15.02.2014 12:59

Зачем цикл?

var inp = document.getElementById("input");
if(~inp.value.indexOf('а')) alert('Буква есть');
else alert('Буквы нет');

EvgShaman 15.02.2014 13:03

А если мне нужно при нахождении каждой 'а' вызывать функцию? Как найти каждую 'а' ?

ruslan_mart 15.02.2014 13:09

<!DOCTYPE HTML>
<html>
  <head> </head>
  <body>
    <input id="text" type="text" value="арбуз">
    <input onclick="hasChar('а')" type="button" value="Search">

    <script>
	var text = document.getElementById('text');
      
      function hasChar(char) {
        value = text.value;
        for(var i=0; i<value.length; i++) {
          if(value.charAt(i) === char) {
            alert(true);
          }
        }
      }



    </script>

  </body>
</html>

EvgShaman 15.02.2014 13:11

Спасибо))

ruslan_mart 15.02.2014 13:12

Так и знал, что danik.js мимо не пройдёт, минусанёт за ~ :D
Вот лол.

danik.js 15.02.2014 13:27

Цитата:

Сообщение от Ruslan_xDD
~

Да, и даже не поленился найти ссылку:
http://habrahabr.ru/post/205616/
Цитата:

Я просто уверен, что автор был очень горд. Для начала, почему именно так? Разве !~utils.indexOf(...) && действительно достойная замена if (utils.indexOf(...) >= 0)?
Цитата:

Использование ~ для проверки возвращаемого функцией indexOf значения, которое может быть равным -1 при отсутствии элемента, просто неразумно. И пожалуйста, не говорите мне, что «так же быстрее».
Дискуссия в каментах: http://habrahabr.ru/post/205616/#comment_7085638

Цитата:

Сообщение от EvgShaman
А если мне нужно при нахождении каждой 'а' вызывать функцию? Как найти каждую 'а' ?

Всмысле подсчитать количество 'а'? Или узнать их индексы?

Поиск всех буковок:
var string = "абвабв";
var index = string.indexOf('а');
while (index > -1) {
    alert('нашли букву на позиции ' + index);
    index = string.indexOf('а', index + 1);
}


Подсчет, через регулярку:
var string = "абвабв";
var matches = string.match(/а/g);
var count = matches ? matches.length : 0;
alert(count);

danik.js 15.02.2014 13:31


Vlasenko Fedor 15.02.2014 14:05

var string = "вабвабв";
  var col = --string.split("а").length;
  alert(col);

:)

ruslan_mart 15.02.2014 15:09

danik.js, я специально так пишу, чтобы ты мимо не проходил, неужели ты не понял? :D


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