----------------------------I don't know why this appeared for a second time - 
I didn't re-send it intentionally - so apologies all round.

However, it gives me the opportunity to reply to Ben, Mike & Larry:

Thanks for your responses.

I prefer the while loop to my goto so that's an improvement - thanks Ben & 
Larry.

I looked at the SSTRIP(I) functions when I was searching for a function that I 
was sure must exist to do what I wanted. I concluded that I could take out all 
the spaces but that wouldn't leave me a way to use SSUB. Thanks Mike, if I'm 
missing a way to do what I want with it please let me know.

I had already discovered the problem with SLOC and double spaces after I posted 
originally and before Larry's comments. I'd got around it by replacing all 
spaces with a | and then getting rid of the double ones - much as suggested.

It seems obvious to ask why SLOC has a problem identifying two spaces? Is it an 
R:Base problem or a Windows/general computing one? IF it's an R:Base one does 
it need reporting or is RBTI aware already?

Also, is there a need for a function that can take out the words from a string 
regardless of the number of spaces between them? A sort of "Super-SLOC" that, 
perhaps, works on any number of spaces rather than the comma (or whatever the 
delimit is set to)?

Regards,
Alastair.


  ----- Original Message ----- 
  From: Alastair Burr 
  To: RBASE-L Mailing List 
  Sent: Saturday, May 03, 2008 8:31 AM
  Subject: [RBASE-L] - Removing multiple spaces from a string


  I am trying to remove all double spaces in text in order to replace the 
remaining single spaces with a comma so that I can use SSUB on the converted 
string.

  The target string (vVarData) may have an unknown number of spaces between the 
words. There's no pattern from one string to another. In theory there's no 
limit to the length of any space although, in practice, it's likely only to be 
a few space "characters".

  I expected to be able to come up with something rather more eloquent than 
this:

  SET VAR vVarData = (TRIM(.vVarData))
  LABEL lSpaces
    SET VAR vCount = 0
    SET VAR vCount = (SLOC(.vVarData, '  '))
    IF vCount <> 0 THEN
      SET VAR vVarData = (SRPL(.vVarData, '  ', ' ', 0))
      GOTO lSpaces
      ENDIF
  SET VAR vVarData = (SRPL(.vVarData, ' ', ',', 0))
  SET VAR vWord3 = (SSUB(.vVarData, 3))
  SET VAR vWord4 = (SSUB(.vVarData, 4))
  SET VAR vWord6 = (SSUB(.vVarData, 6))
   
  Am I missing a more obvious method to get the end result?
   
  Regards, 

  Alastair 

   

  ----------------------------

  Alastair Burr

  St. Albans, UK.

  [EMAIL PROTECTED]

  -----------------------------

   



------------------------------------------------------------------------------


  No virus found in this incoming message.
  Checked by AVG. 
  Version: 7.5.524 / Virus Database: 269.23.8/1412 - Release Date: 02/05/2008 
16:34

Reply via email to