Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Simple String question

  • To: mathgroup at smc.vnet.net
  • Subject: [mg110723] Re: Simple String question
  • From: David Bailey <dave at removedbailey.co.uk>
  • Date: Sat, 3 Jul 2010 08:19:01 -0400 (EDT)
  • References: <i0k2ft$jra$1@smc.vnet.net>

On 02/07/10 07:54, S. B. Gray wrote:
> I have strings like foo="623 715". foo will always be 3 digits, space, 3
> digits. I need to put each set of digits in numerical order and then put
> the two triples in order. This would give 157 236. There must be a
> simple way to do this, but I see nothing under string sorting.
>

This splits out the two 3-digit codes, splits these into individual 
characters using Characters[], and sorts the result before reassembling 
each string. Then I compare the numerical value of the two expressions, 
and return the appropriate ordering:

In[3]:= foo = "623 715"

Out[3]= "623 715"

In[4]:= str1 = StringTake[foo, 3];

In[5]:= str2 = StringDrop[foo, 4];

In[9]:= str1 = StringJoin @@ Sort@Characters[str1]

Out[9]= "236"

In[10]:= str2 = StringJoin @@ Sort@Characters[str2]

Out[10]= "157"

In[11]:= If[ToExpression[str1] < ToExpression[str2],
  str1 <> " " <> str2, str2 <> " " <> str1]

Out[11]= "157 236"

Of course, you may want to join this code together into a single 
function, but it is nice to see the separate steps before creating a 
black box!

David Bailey
http://www.dbaileyconsultancy.co.uk


  • Prev by Date: Re: problems
  • Next by Date: Re: Mathematica Collect function
  • Previous by thread: Re: Simple String question
  • Next by thread: Re: Simple String question