exist a delphi function that could remove more than one space from words?

Hello guys,

I have a table with 10.000 lines with sentences, just like this:

"My father is working at home"

Sometimes, there are sentences with double or more space among words, exemplo:

"She  is here  with Vanessa."

I need a function that could fix it, removing more than one space among words.

thanks
alexandre
LVL 1
hidrauAsked:
Who is Participating?
 
ThommyConnect With a Mentor Commented:
Ok, I will not post .exe in future!!!

Here's another version of my function using "stringreplace":

function RemoveMoreThanOneSpacesBetweenWords02(s:string):string;
var
  p:integer;
begin
  s:=trim(s);
  Repeat
    p:=pos('  ',s);
    if p>0 then s := StringReplace(s, #32#32, #32, [rfReplaceAll]);
  Until p=0;

  result:=s;
end;
0
 
ThommyCommented:
There is no Delpi standard function, which will do that.

But I have written a function on my own. Try, if it works for your matters:

function RemoveMoreThanOneSpacesBetweenWords(s:string):string;
var
  p:integer;
begin
  s:=trim(s);
  Repeat
    p:=pos('  ',s);
    if p>0 then delete(s,p+1,1);
  Until p=0;

  result:=s;
end;
0
 
ThommyCommented:
You can check functionality with the attached program...
RemoveMoreThanOneSpacesAroundWor.exe
0
Cloud Class® Course: Microsoft Windows 7 Basic

This introductory course to Windows 7 environment will teach you about working with the Windows operating system. You will learn about basic functions including start menu; the desktop; managing files, folders, and libraries.

 
Geert GOracle dbaCommented:
just use stringreplace

Text := StringReplace(Text, #32#32, #32, [rfReplaceAll]);

Only double spaces will be changed into single spaces
0
 
Geert GOracle dbaCommented:
you could run it multiple times if you have more than 2 spaces
0
 
Geert GOracle dbaCommented:
thommy, don't post .exe to see a sample working
it'll just fill up the ee servers

post a code sample instead showing the usage
0
 
hidrauAuthor Commented:
thanks very much
0
 
Geert GOracle dbaCommented:
hidrau ...
you normally share poinx when 1 person gives the idea
and the other one steals the idea
0
 
8080_DiverCommented:
Just out of curiosity, you reference having the data in a TABLE . . . what is the database?
If this is a SQL SERVER table, then you can execute a query to accomplish the substitution of one space for multiple spaces and it would execute a lot faster than doing it row by row.  I believe there is also a corresponding SQL function in most other databases.  
0
 
ThommyCommented:
8080_Diver is right.

For example in ORACLE and SQL Server you can use the REPLACE()-function in an Update-Command to do string replacement for fixed character strings.

But if you have different strings to replace like double or triple spaces, then you either have to write a SQL function or start your update command several times to get all multi-spaces replaced by one space...

0
 
8080_DiverCommented:
Thommy,
If you put the process in a stored proc and have it in a WHILE loop, you can execute it until you get 0 rows affected.  It is still a lot faster than doing it on a row by row basis. ;-)
Remember, SQL Is Your Friend.
0
 
Geert GOracle dbaCommented:
you actually run it until the length of the text is the same before and after the function
the number of rows doesn't need to change
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.