Dear,
The kixtart 3.63 code
code:
$code="1.234.567,89"
? "(old format) "+$code
$ChrToReplace="." $ReplacementChr="\"
GOSUB replace
$ChrToReplace="," $ReplacementChr="."
GOSUB replace
$ChrToReplace="\" $ReplacementChr=","
GOSUB replace
? "(new format) "+$code
EXIT
:replace
WHILE (Instr($code,$ChrToReplace) <>0)
$i=Instr($code,$ChrToReplace)
IF $i = 1
$code=$ReplacementChr+Substr($code,2,len($code)-1)
ELSE
IF $i = len($code)
$code=Substr($code,1,len($code)-1)+$ReplacementChr
ELSE
$code=Substr($code,1,$i-1)+$ReplacementChr+Substr($code,$i+1,len($code)-i)
ENDIF
ENDIF
LOOP
RETURN
The kixtart 4.x version:
code:
$code="1.234.567,89"
? "(old format) "+$code
? "(new format) "+replace(replace(replace($code,".","\"),",","."),"\",",")
Function Replace ($SourceString,$ChrToReplace,$ReplacementChr)
$Array = Split($SourceString,$ChrToReplace,-1)
For Each $Element In $Array
$Replace = $Replace + $Element + $ReplacementChr
Next
IF (Substr($Replace,len($Replace),1) = $ReplacementChr)
$Replace=substr($Replace,1,len($Replace)-1)
ENDIF
ENDFUNCTION
In your example the code
code:
$code="1.234.567,89"
? "(old format) "+$code
$ChrToReplace="." $ReplacementChr="\"
GOSUB replace
$ChrToReplace="," $ReplacementChr="."
GOSUB replace
$ChrToReplace="\" $ReplacementChr=","
GOSUB replace
? "(new format) "+$code
EXIT
becomes
code:
$code="This is a test"
? "(old format) "+$code
$ChrToReplace="t" $ReplacementChr="k"
GOSUB replace
? "(new format) "+$code
EXIT
greetings.
btw: replacement of characters is case insensitive.
btw: for more information about the REPLACE function see our reaction to topic
http://81.17.37.55/board/ultimatebb.php?ubb=get_topic;f=1;t=004630