Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.06.2012, 08:47
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 1  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Question Вытащить из строки все числа (RegExp)

Всем привет,
Возникла необходимость разделить кучу строк типа:
Код AS3:
823  1963  3628  4746  5650  7192  8156  8820  9988 10920 12020 13174 14462 15684 16698 18274 19129 xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx
таким образом, чтобы получить массив, содержащий только числа
Код AS3:
823, 1963, 3628... и т.д
Но так как я не особо силен в регулярных выражениях, нужна помощь в "придумывании" выражения для этой цели. Пока мне удавалось только получить простые числа, но это не то, что нужно

Старый 26.06.2012, 09:39
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 2  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
А зачем Вам здесь регулярное выражение?
Код AS3:
var numbs:Array = string.split(" ");
__________________
Reality.getBounds(this);

Старый 26.06.2012, 11:09
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 3  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Проблема тут в том, что пробелов может быть несколько. И неизвестно сколько их и когда будет.
Пока я эту проблему решил так:
Код AS3:
var spaces:RegExp 	= /\s{2,}/g; // сносим все лишние пробелы													
millisecondsString = millisecondsString.replace(spaces, " ");
millisecondsString= millisecondsString.substr(1, millisecondsString.indexOf("xxxxx") - 2);
var digits:Array = millisecondsString.split(" ");
Но наверняка существует способ по-красивее.

Старый 26.06.2012, 11:49
maxkar вне форума Посмотреть профиль Отправить личное сообщение для maxkar Найти все сообщения от maxkar
  № 4  
Ответить с цитированием
maxkar

Регистрация: Nov 2010
Сообщений: 497
Цитата:
Но наверняка существует способ по-красивее.
Код AS3:
millisecondsString.split(/\s+/);
Не проверял, может '\' перед '+' нужен.

Старый 26.06.2012, 11:59
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 5  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Добавляет пустую ячейку в начало получившегося массива и вставляет туда же учатки ххххх, ххххх. А нужны только числа.
Все-таки наверное остановлюсь на своем способе, вроде не особо он тормозной

Старый 26.06.2012, 12:13
DaFive вне форума Посмотреть профиль Отправить личное сообщение для DaFive Посетить домашнюю страницу DaFive Найти все сообщения от DaFive
  № 6  
Ответить с цитированием
DaFive
 
Аватар для DaFive

Регистрация: May 2008
Адрес: {0,0}
Сообщений: 754
Записей в блоге: 1
Отправить сообщение для DaFive с помощью ICQ
Сносите пробелы больше 2х вашей регуляркой.
Код AS3:
str = str.replace(/[^0-9]/g,",");
arr = str.split(",");
Потом чистим левые элементы в массиве и получаем то, что нужно.
__________________
Кодинг, багинг, алгоритминг. me @


Последний раз редактировалось DaFive; 26.06.2012 в 12:18.
Старый 26.06.2012, 12:38
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 7  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
DaFive, здесь идеальный вариант одной регуляркой вытащить все числа сразу в массив. Все остальное не подходит.
Тем более мой способ короче.

Старый 26.06.2012, 14:02
TWETTI вне форума Посмотреть профиль Отправить личное сообщение для TWETTI Найти все сообщения от TWETTI
  № 8  
Ответить с цитированием
TWETTI
 
Аватар для TWETTI

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
Вот так можно из строки найти все целые положительные числа и записать их в массив.
Код AS3:
var str:String = "823  1963  3628  4746  5650  7192  8156  8820  9988 10920 12020 13174 14462 15684 16698 18274 19129 xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx"
var re:RegExp = /\d+/g;
var result:Array = str.match(re);
trace(result);
// Выводит:
// 823,1963,3628,4746,5650,7192,8156,8820,9988,10920,12020,13174,14462,15684,16698,18274,19129

Старый 26.06.2012, 15:03
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 9  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Вот это то, что нужно. Спасибо

Старый 26.06.2012, 16:04
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 10  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Странно,что никто не предложил этого:

Код AS3:
var str:String = "823  1963  3628  4746  5650  7192  8156  8820  9988 10920 12020 13174 14462 15684 16698 18274 19129 xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx"
var result:Array = str.split(/\s+/);
trace(result);
Впрочем, вариант выше должен быть надежнее.

Создать новую тему Ответ Часовой пояс GMT +4, время: 03:31.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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