Blaise Computing's "Power Tools Plus" offered just such a function in
their Unit_Str unit.

The __CvtStr function used the _REM_LEAD_WHITE_STR +
_REM_TRAIL_WHITE_STR + _REDUCE_WHITE_STR combination of constants to
achieve what you'd like to do.

I have the full source to all their units, but, as the copywrite says,
it's theirs.  What are the legalities when a company goes kaput like
this?  Is the source still only usable by those that bought a licence,
like me?

Header follows:


{***********************************************************************
}
{
}
{ UNIT_STR String Functions
}
{
}
{ This unit implements the POWER TOOLS PLUS String manipulation
}
{ routines.  These routines enhance the string functions provided by
}
{ Turbo Pascal.  All routines in this unit are functions  which return
}
{ the generic string type.
}
{
}
{  Justification constants for __JustStr.
}
{
}
{  _LEFT_JUST_STR  Left justify                              (constant)
}
{  _RIGHT_JUST_STR Right justify                             (constant)
}
{  _CENTER_STR     Center within the field                   (constant)
}
{
}
{  String converstion constants for __CvtStr.
}
{
}
{  _REM_WHITE_STR       Remove all white space               (constant)
}
{  _REM_LEAD_WHITE_STR  Remove leading white space           (constant)
}
{  _REM_TRAIL_WHITE_STR Remove trailing white space          (constant)
}
{  _REDUCE_WHITE_STR    Reduce white space to one blank      (constant)
}
{  _SAVE_QUOTED_STR     Preserve quoted string               (constant)
}
{  _TO_UPCASE_STR       Convert to upper case                (constant)
}
{  _TO_LOWCASE_STR      Convert to lower case                (constant)
}
{  _DISCARD_STR         Discard excess characters            (constant)
}
{
}
{  Date formatting constants
}
{
}
{  _USA_DT_STR          USA format           mm-dd-yy        (constant)
}
{  _EURO_DT_STR         European format      dd-mm-yy        (constant)
}
{  _YEAR_DT_STR         Full year format     mm-dd-yyyy      (constant)
}
{  _MONT_DT_STR         Month abbrv. format  dd-mmm-yy       (constant)
}
{  _FORM_DT_STR         Formal date, e.g.,   June 1, 2988    (constant)
}
{
}
{ Time formatting constants
}
{
}
{  _12HOUR_STR          Twelve hour time string,      "1:25" (constant)
}
{  _INC_SEC_STR         Include seconds,          "13:25:30" (constant)
}
{  _INC_TIC_STR         Include hundredths,       "13:25.55" (constant)
}
{  _INC_AMPM_STR        Append AM or PM,          "13:25 PM" (constant)
}
{  _STANDARD_STR        Standard time string,      "1:25 PM" (constant)
}
{  _COMPLETE_STR        Complete time string,  "13:25:30.55" (constant)
}
{  _DOS_DIR_STR         Used by __DirStr             "1:25p" (constant)
}
{
}
{  _AMPM_STR            The strings ' AM' and ' PM'          (static)
}
{  _ap_STR              The string 'ap' for DOS time         (static)
}
{
}
{  _FMT_BUFLEN_STR      Format text file buffer length       (constant)
}
{
}
{  _StrMonths           Array of month names                 (static)
}
{  _StrDays             Array of day names                   (static)
}
{
}
{  _StrUSACh            Date delimiter for USA               (static)
}
{  _StrEuroCh           Date delimiter for Europe            (static)
}
{
}
{  _StrMoneyCh          Money character                      (static)
}
{
}
{ __LeftStr   Extract the left most characters of a string
}
{ __RightStr  Extracts characters to the right end of a string
}
{ __RightMost Extract the right most characters of a string
}
{ __SubStr    Extract substring from a string
}
{ __MidStr    Place characters within a string
}
{ __FillStr   Fill a string with copies of a character.
}
{ __XlateStr  String translation
}
{ __JustStr   Justify a string within a field.
}
{ __CvtStr    Conversion of a string
}
{ __EnTabStr  Return a string with spaces converted to tab characters
}
{ __DeTabStr  Return a string with tabs expanded to space characters
}
{ __ToRadStr  Return the radix representation of an integer type
}
{ __ToDecStr  Return the unsigned decimal representation of an integer
}
{ __ToHexStr  Return the hexadecimal representation of an integer
}
{ __Ptr2Str   Return a string representing a pointer value
}
{ __DateStr   Return the system date
}
{ __TimeStr   Return the system time
}
{ __FormStr   Format a string according to a mask
}
{ __Dt2StStr  Convert month, day and year into a date string
}
{ __St2DtStr  Extract the month, day, and year from a date string
}
{ __InitFStr  Initialize a string format text file device.
}
{ __RetBfStr  Return the formatted text buffer.
}
{ __DirStr    Convert DOS directory information to a string
}
{ __Time2Str  Make a string representing the time of day
}
{ __TFromStr  Return the time from a string
}
{
}
{ Version 5.10 (C)Copyright Blaise Computing Inc. 1990
}
{_______________________________________________________________________
} 

Stu 

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Graeme
Geldenhuys
Sent: Fri, May 26, 2006 7:08 AM
To: FPC-Pascal users discussions
Subject: [fpc-pascal] Trim repeated whitespace from a string

Hi,

Anybody know of a function that can remove (normalize) a string by
remove all beginning and ending whitespace as well as replace all
repeated spaces with a single space.  A bonus would be to remove tabs
and newlines chars as well, but that is not so important.

Example:
Before:   "  This is         what it    should        look like. "
After:       "This is what it should look like."


Any ideas?  I see JavaScript has such a build-in function called

--
There's no place like 127.0.0.1

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to