How to replace just the first found space with tab for all lines in a variable?

Keith Clarke keith.clarke at clarkeandclarke.co.uk
Wed May 25 11:14:41 EDT 2011


Thanks to Roger, Ken and Chris for playing - but Jim gets the prize for the simplicity brought through passing data out to a second variable, line by line, rather than trying to fix the data in place (which is an interesting mental challenge but quite convoluted). 

So, I settled on this four line fix variant on Jim's first solution (I found that had to declare the line explicitly for each word chunk) 

   repeat for each line tLine in tSourceList
      put word 1 of tLine & tab & word 2 to -1 of tLine & return after tResultTable
   end repeat
   filter tResultTable without empty

So, I now have a nice, clean label-value table field.

Nice that variables are 10 a penny in LiveCode! :-)
Best,
Keith..

On 25 May 2011, at 12:04, Jim Ault wrote:

> On May 25, 2011, at 3:11 AM, Keith Clarke wrote:
>> A simple requirement but I'm struggling with getting the structure and syntax needed to replace only the first space character in each line of a variable with a tab.
>> 
>> I have a field of label-value pairs - and some of the values contain spaces. This creates problems if I attempt a blanket approach of 'replace space in tVariable' with tab.
>> 
>> So, I tried iterating through each tLine of tVariable but get a runtime error with 'replace space 1 in line tline with tab'. So, I'm guessing that 'space' can't be used to set chunk expression scope.
>> 
>> So, within each line, I'm iterating at character-level, with 'repeat for each character tChar in the line, if tChar is space then...
>> 
>> I've tried 'replace tChar with tab' and 'add tab after tChar' and then 'delete tChar' but I get errors - probably because I'm trying to delete the reference variable(?)
>> 
>> I'm sure there is a nice efficient way to do this, so any advice on structure, syntax or command usage would be greatly appreciated.
> 
> There are a few approaches  (working code below)
> 
> repeat for each line LNN in labelValueList
>   put word 1 & tab & word 2 to -1 of LNN & cr after newList
> end repeat
> filter newList without tab  --optional for tab-only lines
> filter newList without empty  --optional for 0 char lines





More information about the use-livecode mailing list