Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > проанализировать строку


Автор: 1Andrey1 30.12.2009, 21:38
Здравствуйте, история у меня такая. Возникла необходимость написать несложное приложение-калькулятор, которое должно находится на страничке в интернете. Я относительно неплохо знаю delphi, но с web никогда не связывался, поэтому сначала я написал свой калькулятор на делфи и вот теперь пытаюсь переписать его на javascript. Вроде как пока получалось (не без помощи такойто матери конечно), но вот в этом месте у меня почемуто полный ступор... Помогите перевести это на javascript.


Код

procedure TForm1.razborstroki;
const
letters = ['I','A','W','E','F'];
numbers = ['0'..'9'];
var
str:string;
j,tmp,I,A,W,E,F:integer;

begin

str:="A6W4E9"; //исходная строка

For j:=1 to Length(str) do   //перебираем по порядку все символы в исходной строке
  begin
    if str[j] in letters then   //если символ - буква
      begin
        tmp:=strtoint(str[j+1]);  //берем следующую за буквой цифру
        if str[j+2] in numbers  then tmp:=10;  //если две цифры подряд, то это 10
        case str[j] of  //присваиваем полученную цифру в нужную переменную
         'I':I:=tmp;
         'A':A:=tmp;
         'W':W:=tmp;
         'E':E:=tmp;
         'F':F:=tmp;
        end;
      end;
    end;
end;


я откомментировал текст программы, но чтобы было понятнее обьясню что мне все таки нужно. Есть некая строка, она состоит из букв (это могут быть только буквы I,A,W,E,F) за буквой - цифра от 1 до 10. Т.е. строка выглядит например так "A6W4E9", ну или "I10A9E5F3" или как-нибудь еще, но буквы только перечисленные и значения только от 1 до 10. Мне нужно проанализировав строку присвоить значения соответствующим переменным, т.е из строки "A6W4E9" я должен получить значение переменных A=6,W=4,E=9. Надеюсь на вашу помощь.

Автор: bars80080 30.12.2009, 23:46
Цитата(1Andrey1 @  30.12.2009,  20:38 Найти цитируемый пост)
т.е из строки "A6W4E9" я должен получить значение переменных A=6,W=4,E=9

я уверен, что это всё можно было обойти благодаря встроенным средствам javascript и сделать гораздо проще

ну, да ладно

Код

var str = '', s = '', res = '', j = 0, tmp = 0, I = 0, A = 0, W = 0, E = 0, F = 0;
str = "A6W10E9"; //исходная строка
var slen = str.length;
for(j = 0; j < slen; j++) {   //перебираем по порядку все символы в исходной строке
    s = str.slice(j, (j + 1));
    tmp = parseInt(s);
    if(isNaN(tmp)) {
        res = s + '=';
        j++;
        s = str.slice(j, j + 1);
        res += s;
        if(s == '1' && j < (slen - 1)) {
            s = str.slice(j + 1, j + 2);
            if(s == '0') { res += s; }
        }
        eval(res);
    }
}
alert('I='+I+',A='+A+',W='+W+',E='+E+',F='+F+'');



жесть конечно полная

следовало бы озвучить настоящую задачу и показать, как решил её делать. наверное, всё-таки в этих двух языках она решается по разному

Автор: 1Andrey1 31.12.2009, 00:06
Огромное спасибо! сейчас буду пробовать. 

А на счет жести, я и не спорю smile но на самом деле 
Цитата(1Andrey1 @  30.12.2009,  21:38 Найти цитируемый пост)
из строки "A6W4E9" я должен получить значение переменных A=6,W=4,E=9.

Это практически и есть почти вся задача... ну не совсем вся конечно. Таких строк несколько, их вводит пользователь. Просто оно хоть с первого взгляда и кажется странным, но для этой конкретной задачи такой способ ввода исходных данных является самым удобным для пользователя. Значения в переменные я получаю конечно тоже не просто так, потом все эти значения считаются по определенной формуле, но тут уже тривиальная задача и с ней я способен справиться сам. 

Автор: bars80080 31.12.2009, 00:46
ну, тебе конечно видней, как удобнее. но мне даже близко не очевидно, что это есть.

если конечно речь идёт об обычном калькуляторе

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)