Re: working with large strings.
- To: mathgroup at smc.vnet.net
- Subject: [mg21658] Re: working with large strings.
- From: Bojan Bistrovic <bojanb at physics.odu.edu>
- Date: Fri, 21 Jan 2000 04:00:09 -0500 (EST)
- Organization: Old Dominion Universityaruba
- References: <86156m$jsj@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
dustin wrote:
>
> If you want to write a program that alters elements of very large lists
> you can alter single elements with
>
> largelist[[elementnumber]]=newvalue;
>
> However, if you want to do this with a large string you have to do
> something like
>
> largestring=StringTake[largestring,{1,elementnumber-1}]<>newvalue<>StringTake[largestring,{1,elementnumber+1}];
>
> The problem with this is it requires making a whole new copy of the
> string to change just one element. This will really slow a program down
> if you are working with large strings or have to repeat the process many
> times.
>
> Does anyone know a way around this?
>
> Dustin Soodak
You could try using
largestring=StringReplacePart[largestring,newvalue,{elementnumber,x}]
where "x" would be 1 in your case (if you want to replace just one
element of the string. I'm not sure how it works internally, does it
involve large copying or not. The other option is to convert the
string to a list and then work with the list:
largelist=Characters[largestring]
largelist[[elementnumber]]=newvalue
largestring=StringJoin@@largelist
The last one isn't worth the trouble if you just need to do the
replacement once, but if your problem involves a lot of replacements,
you might want to work with the list instead (if the nature of your
problem allows, of course)
Bye, Bojan
--
-------------------------------------------------------------
Bojan Bistrovic, bojanb at physics.odu.edu
Old Dominion University, Physics Department, Norfolk, VA
-------------------------------------------------------------