Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Проверяет только по первой букве, а не по всему слову (http://www.flasher.ru/forum/showthread.php?t=110867)

muhactive 10.04.2008 16:08

Проверяет только по первой букве, а не по всему слову
 
Здравствуйте!
Писал функцию определяющую русские ли слова содержит строка.
Но почемута она проверяет только по первой букве а не повсему слову.
Код:

function registration(imya){
        if(typeof imya=="string" && imya!="") {
                for(i=0; i<=imya.length; i++){
                if (imya.charAt(i)>="А" && imya.charAt(i)<="я"){
                        return true;
                        }
                else {
                return false;
                  }
                }
        }
}
trace(registration("ПятнUWEFC"));

На запрос выдаёт TRUE хотя с 5 символа пошли уже не русские буквы.
Подскажите пожалуйста почему цикл не срабатывает правильно:umnik2: Заранее благодарен!

chingachgoog 10.04.2008 16:25

Потомучто после первой же буквы срабатывает return

muhactive 10.04.2008 16:41

не мог бы ты исправить ошибку? а то что то у меня не выходит! Куда return переставить?

iNils 10.04.2008 16:42

muhactive получает плюс за глобальное игнорирование запятых.

crazyone 10.04.2008 17:01

А что должна выдавать твоя функция, когда и кирилица и латиница в строке?

chingachgoog 10.04.2008 17:05

Если грубо, то можно переставить return true в самый конец функции

muhactive 10.04.2008 17:10

false

crazyone 10.04.2008 17:18

Как-то так поменять:
Код:

function registration(imya){
        if(typeof imya=="string" && imya!="") {
                for(i=0; i<imya.length; i++){
                  if (!(imya.charAt(i)>="А" && imya.charAt(i)<="я")){
                      return false;
                  }
                }
                return true;
        }
}
trace(registration("ПятнUWEFC"));


muhactive 10.04.2008 17:24

Так работает. Спасибо!!!
Только я так и не понял почему тогда моя функция не работала. Ведь ты просто зделал "наоборот".

Tochilin 10.04.2008 17:29

Код:

function russ_text(str) {
        /* Для начала нужно проверить, является ли переданный параметр строкой.
        Также он не должен быть пустой строкой - поле ввода должно быть заполнено.*/
        if (typeof str == "string" && str != "") {
                /*Если предыдущие условия выполнены, запускаем цикл, при помощи которого просматрива-
                ем все символы строки. Длину строки определяем при помощи свойства length. */
                for (var i = 0; i<str.length; i++) {
                        /* Сравниваем текущий символ строки с буквами "А" и "я" (первый и последний символы в
                        русском блоке уникода) (буква "А" должна быть обязательно кирилличной - использование
                        латинского аналога собьет работу алгоритма). Если он принадлежит к нужному диапазону,
                        переходим к следующему символу. В противном случае обрываем работу кода и возвращаем
                        false (эти задачи выполняет предложение return). Определить, какой символ в строке
                        занимает позииию i, можно, воспользовавшись методом charAt(). */
                        if (str.charAt(i)>="А" && str.charAt(i)<="я") {
                        } else {
                                return false;
                        }
                }
                // Если цикл не прервался, значит, ни одного не кирилличного символа найдено не было. Возвращаем true.
                return true;
                // В случае, если поступившие данные не являются не пустой строкой,
                // возвращаем false
        } else {
                return false;
        }
}
trace(russ_text("Привет")); // Возвращает: true
trace(russ_text("Hello")); // Возвращает: false (использованы латинские
// буквы)
trace(russ_text('_root')); // Возвращает: false (_root не является строкой)

Этот пример взят из книги и ОЧЕНЬ подробно откомментирован. Надеюсь поможет.
Удачи!


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

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.