PDA

Просмотр полной версии : отсортировать текстовые символы в массив.


Slavik2003
25.07.2005, 13:56
Здравствуйте....

Долго ищу инфу по этому вопросу....

Есть текстовое поле с именем(var) text2 .
В нем уже написано продолжительное количество символов - "regjukj".

Мне нужно сохранить в переменную только четвертую букву - "j". Или первую... Или допустим создать поиск буквы в строке.

Возможно ли это? Можете дать примерный скриптик?

Может надо как то иначе, допустим сохранять всю строку в переменную, и потом ее обрабатывать.

А потом я хочу отсортировать это в одномерный массив, но с массивами я знаю как работать. Мне лишь надо знать как "раздробить" строчку и сохранять отдельные ее части...

Заранее спасибо...

KUZEN
25.07.2005, 13:58
бери и в цикле лепи массив выдирая по одной буковке ...

dimarik
25.07.2005, 14:01
myArray = [];
myArray = text2.split("");

И в массиве будут отдельные символы.

Slavik2003
25.07.2005, 14:06
в цикле, в смысле при вводе? я имел ввиду что текст уже введен, и его надо обработать.... поскольку мне надо чтоб обработка символов была от начала до конца, без прерываний. допустим пользователь сотрет последний символ и заменит его в строке... это потребует дополнительные функции для пересчета.

Slavik2003
25.07.2005, 14:08
dimarik
Спасибо... щас попробую....

KUZEN
25.07.2005, 14:11
str = "asdfghjkl";
arr = new Array();
for (var i = 0; i<str.length; i++) {
arr = str.split("");
}

dimarik
25.07.2005, 14:14
str = "asdfghjkl";
arr = new Array();
for (var i = 0; i<str.length; i++) {
arr = str.split("");
}
и работает? спать хоть иногда надо

KUZEN
25.07.2005, 14:16
спать надо тебе ... (((

Slavik2003
25.07.2005, 14:21
dimarik
KUZEN

Спасибо вам огромное.... это то что мне было надо... : ) !!!

За одно... : ) ...но это уже вопрос посложнее....
Допустим я разбил на массив - 1, 2, a, ...
А вот можно ли как то (без математических уравнений умножающих первое на 10) соединить первую ячейку со второй так, чтоб получилось число 12 ? (а не 1, 2)
Поскольку в строке было введено "12a..." мне иногда придется отделять числа от букв и от других чисел.

Если кто знает... помогите пожалуйста...

dimarik
25.07.2005, 14:22
ничё не втыкаю. зачем тут цикл, скажи?

dimarik
25.07.2005, 14:24
2 Slavik2003
Не темни, скажи цель какая. Может более изящныс способом можно сделать

Slavik2003
25.07.2005, 14:25
добавлю лишь, что это может быть уже в другом массиве... делаться из 1 и 2 - 12.

Slavik2003
25.07.2005, 14:28
dimarik
Это некая система паролирование карты одной игрушки : )
Но хотелось, чтоб именно через текстовое поле осуществлялся ввод новой карты.
Карта пишется в зашифрованном виде. В текстовое поле ввидже строки символов.
Программа обрабатывает строку, и строит карту.

Поэтому понадобилась гибкость использования введенного текста.

KUZEN
25.07.2005, 14:29
ничё не втыкаю. зачем тут цикл, скажи?
Цикл что бы разбить строку, а то что ты предлогал тупо записывается в одну ячейку массива ...

dimarik
25.07.2005, 14:32
Цикл что бы разбить строку, а то что ты предлогал тупо записывается в одну ячейку массива ...
Ты правда так считаешь?
А проверить слабо?

text2="xcvsdfgdfgdfg";
myArray = [];
myArray = text2.split("");
trace(myArray.join(", "));
trace(myArray[5]);

Slavik2003
25.07.2005, 14:32
Kuzen
я проверил.... то что дал димарик... этот способ как раз таки разбивает все на массив, где в каждой ячейке другой символ. можно любой выбрать, я испытал : )

dimarik
25.07.2005, 14:40
итак, текстовое поле анализируем на предмет ключа, по которому строим некую карту. пральна?

dimarik
25.07.2005, 14:44
В общем, посмотри в хелпе методы классов Array и String

Slavik2003
25.07.2005, 16:37
В общем, я нашел кое-что, что позволяет обойтись без лишнего массива.

slice(x, x2);

x - начальная ячейка.
x2 - конечная + (-1)

Допустим в текстовом поле написано "123456".

trace(text2.slice(1, 2)); - выдает "2".
trace(text2.slice(0, 2)); - выдает "12".
trace(text2.slice(0, 3)); - выдает "123". (от и до конечной).

Нет необходимости вообще создавать отдельный массив(myArray = [];)

Кроме того, здесь я нашел ответ на второй вопрос, как с нулевой и первой ячейки(или других) создать число 12.
trace(text2.slice(0, 2) * 10 / 10);

Десяточки превращают содержимое масивчика slice в числовое значение. (иначе не смог). Может можно иным способом... подскажите если знаете....

т.е. без десяточек уравнение text2.slice(0, 2) + 2 = 122 (а не 14).



text2.slice(x, x2);
Вот таким вот способом можно перемещаться по текстовому полю : )

dimarik
25.07.2005, 16:51
trace( typeof( Number(text2.slice(0, 2)) ));

Slavik2003
25.07.2005, 17:02
Не выходит. Пишет "number" : ) (с маленькой)

Slavik2003
25.07.2005, 17:06
Дело в том, что slice это маленький масивчик. Состоящий(в случае 0, 2) с 1, 2.
Все что ты делаешь, это превращаешь 1 в число(еще раз) и 2 в число(еще раз). Остается как и было 1, 2. : )

Slavik2003
25.07.2005, 17:19
Способ проще trace((text2.slice(0, 2)*1+5)); - выдаст 17.