views:

639

answers:

3

Flex 3.

I created a TextArea object. Then I typed some text in it. Then i got this text useing TextArea.text property.

How can I split text I got by lines and convert it to the array of strings?

A: 

What does "split by lines" mean to you? The usual thing is to scan the text for the last blank before textwidth, and call that a line.

Charlie Martin
i need to convert multiline text into the array of Strings, where each element is separate line(string of text?)
simplemagik
A: 

According to this site, the character for a line feed feed is "\n". Using the Split() function with "\n" you should be able to split the string into an array of string separated by line feeds.

Aaron
it was my first thought to solve this problem this way. But it doesn't work!
simplemagik
A: 

If "\n" doesn't work for you, try "\r" (carriage return). Here's some code demonstrating how it'd work -- just type into the box and you'll see the array contents change:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="onCreationComplete(event)">

    <mx:Script>
     <![CDATA[

      import mx.events.CollectionEvent;
      import mx.collections.ArrayCollection;
      import mx.events.FlexEvent;

      [Bindable]
      private var ac:ArrayCollection;

      protected function onCreationComplete(event:FlexEvent):void
      {
       ac = new ArrayCollection();
       ac.addEventListener(CollectionEvent.COLLECTION_CHANGE, onCollectionChange);  
      }

      protected function onKeyUp(event:KeyboardEvent):void
      {
       ac.source = event.target.text.split("\r");
      }

      protected function onCollectionChange(event:CollectionEvent):void
      {
       contents.text = ac.source.join("\r");   
      }

     ]]>
    </mx:Script>

    <mx:TextArea id="input" x="19" y="22" width="273" height="175" keyUp="onKeyUp(event)" />
    <mx:TextArea id="contents" x="112" y="249" width="180" height="175" editable="false" />
    <mx:Label x="19" y="222" text="Array Length:" fontWeight="bold" />
    <mx:Label x="37" y="250" text="Contents:" fontWeight="bold" />
    <mx:Label x="111" y="222" text="{ac.length}" />

</mx:Application>

Hope it helps!

Christian Nunciato
thanks a lot!!! it's just what i need!
simplemagik