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

Alex Tweedly alex at tweedly.net
Wed May 25 11:41:47 EDT 2011


Beware this will get the (possibly) wrong result for some data. For 
instance, a comma will terminate a word, so

a,b def

will give you a key of "aTABb def"

rather than a key of "a,TABdef"

I'd stick to the safer

set the itemDel to space
repeat for each line L in tData
    put item 1 of L & TAB & item 2 to -1 of L & CR after tOutput
end repeat


or ... since they are key/value pairs, if (AND ONLY IF) you happen to 
know that the keys are unique

split tData by CR and space
combine tData by CR and TAB

-- Alex.

On 25/05/2011 16:14, Keith Clarke wrote:
> 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
>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
>





More information about the use-livecode mailing list