2013-09-22 4 views
0

У меня есть массив строк, который я хочу проанализировать и создать массив ArrayCollection.Регулярное выражение для разделения строки в скрипте Flex/Action

Строки будут иметь форму «[1] [2] [3] [4] [5]». Там, где каждое число представляет собой следующий

  1. имя, которое содержит любое количество пробелов и специальных символов
  2. Любое число пробелов
  3. Ряд
  4. Одиночная пространство
  5. Строка «GB» всегда

Примеры строки:

  • StackOverflow 500 GB
  • Stack Over поток 100 GB
  • Stack! @ # $ %%^& * _ Flow 50 ГБ

Я хочу иметь регулярное выражение, с помощью которого я могу Сопрягайте часть [1] и [3] (например, StackOverflow и 500) и создавать объекты с этими полями.

+2

Это помогло бы, если бы после того, что вы уже пробовали, так что тот, кто отвечает не повторять то, что вы уже знаете. –

+0

Также; вы не добавили никаких подробностей о том, как ваши образцы строк превратятся в объекты. Должны ли они быть общими объектами? Или специальный тип настраиваемого объекта, который вы создали в другом месте? Зачем вам нужны объекты, а не массив строк? Моя интуиция на данный момент - это то, что вы идете по дороге, которая вызовет больше проблем, которые она решает; когда альтернативное решение даст вам то, что вам нужно. – JeffryHouser

+0

Я пытаюсь проанализировать результат XML команды команды оболочки, которую я написал ... Образец вывода будет выглядеть как [email protected]{'~#p.$p ",. 'Pree}^_ &*()_; +: - |. 238 GB ТНГ Datastore2 238 GB ТНГ Datastore_ VMFS3 239 GB <\result> После этого я разделив его на "\ п" и создание массива строк Я использую ArrayCollection объектов, чтобы обеспечить его как источник для датапарада Datagrid. – Dhinesh

ответ

0

Я рекомендую использовать метод split, чтобы превратить его в массив. Если вы можете управлять разделителем и сделать его единственным символом; Я настоятельно рекомендую. например, что-то вроде этого:

var myString :String = "1|2|3|4|5"; 
var myAray :Array = myString.split('|'); 

Однако, если у вас нет контроля над разделителем строк, вы можете использовать регулярное выражение. концептуально примерно так:

var myString :String = "[1][2][3][4][5]"; 
var regEx : RegExp = new RegExp([\[]|[\]]|[\[\]]); 
var myAray :Array = myString.split(regEx); 

Вы должны предположить, что мое регулярное выражение несовершенно; но больше информации о их создании here. Вы можете получить пустой элемент массива в начале и конце, так как ваша строка начинается и заканчивается разделителем.

+0

У моей строки не было бы прямоугольных фигур. Я добавил их в вопрос, чтобы различать разные части строки. – Dhinesh

+0

У вас возникает очень запутанный вопрос; вы можете попробовать быть более конкретным. Если вы получаете XML (а не строку), то я бы использовал встроенную в Flash функцию e4x для анализа XML. – JeffryHouser

0

Я не знаком с Flex/Action Script, но могу предложить общее регулярное выражение.

(.*)(\s+)(\d+)(\s)(GB) 

Создание объектов с содержанием захваченных в \1 и \3

Здесь каждая пара скобок захватывает [1] в [5] содержание, упомянутые в вопросе, што \1 к \5 соответственно.

Проверьте это в действии: http://regex101.com/r/xF4qS8

Смежные вопросы