Subject: Replace problem
Posted By: neo_jakey Post Date: 1/7/2004 11:27:08 AM
Dear All,
Having a small problem that is making me nuts because it is probably something trivial.  I have converted an int into a string of words but in spanish.  So in english 129.00 is "One hundred and twenty nine dollars" but in spanish it gets more complicated.  "Ciento viente y nueve pesos".  The problem I have is that when the ammount is say 100 pesos then the spanish changes to "cien pesos".  I want to replace "ciento" with "cien".

my code changes the int to word str and then I want to look at that string and replace "ciento pesos" with "cien pesos".

Have a look at the code:

Code to convert number to word string...
<%
Dim words(111,1)
words(1,0) = 1
words(1,1) = "UN "
words(2,0) = 2
words(2,1) = "DOS "
words(3,0) = 3
words(3,1) = "TRES "
words(4,0) = 4
words(4,1) = "CUATRO "
words(5,0) = 5
words(5,1) = "CINCO "
words(6,0) = 6
words(6,1) = "SEIS "
words(7,0) = 7
words(7,1) = "SIETE "
words(8,0) = 8
words(8,1) = "OCHO "
words(9,0) = 9
words(9,1) = "NUEVE "
words(10,0) = 10
words(10,1) = "DIEZ "
words(11,0) = 11
words(11,1) = "ONCE "
words(12,0) = 12
words(12,1) = "DOCE "
words(13,0) = 13
words(13,1) = "TRECE "
words(14,0) = 14
words(14,1) = "CATORCE "
words(15,0) = 15
words(15,1) = "QUINCE "
words(16,0) = 16
words(16,1) = "DIECISEIS "
words(17,0) = 17
words(17,1) = "DIECISIETE "
words(18,0) = 18
words(18,1) = "DIECIOCHO "
words(19,0) = 19
words(19,1) = "DIECINUEVE "
words(20,0) = 20
words(20,1) = "VEINTE "
words(21,0) = 21
words(21,1) = "VEINTEUN "
words(22,0) = 22
words(22,1) = "VEINTIDOS "
words(23,0) = 23
words(23,1) = "VEINTITRES "
words(24,0) = 24
words(24,1) = "VEINTICUATRO "
words(25,0) = 25
words(25,1) = "VEINTICINCO "
words(26,0) = 26
words(26,1) = "VEINTISEIS "
words(27,0) = 27
words(27,1) = "VEINTISIETE "
words(28,0) = 28
words(28,1) = "VEINTIOCHO "
words(29,0) = 29
words(29,1) = "VEINTINUEVE "
words(30,0) = 30
words(30,1) = "TREINTA"
words(31,0) = 31
words(31,1) = "TREINTA Y UNO "
words(32,0) = 32
words(32,1) = "TREINTA Y DOS "
words(33,0) = 33
words(33,1) = "TREINTA Y TRES "
words(34,0) = 34
words(34,1) = "TREINTA Y CUATRO "
words(35,0) = 35
words(35,1) = "TREINTA Y CINCO "
words(36,0) = 36
words(36,1) = "TREINTA Y SEIS "
words(37,0) = 37
words(37,1) = "TREINTA Y SIETE "
words(38,0) = 38
words(38,1) = "TREINTA Y OCHO "
words(39,0) = 39
words(39,1) = "TREINTA Y NUEVE "
words(40,0) = 40
words(40,1) = "CUARENTA "
words(41,0) = 41
words(41,1) = "CUARENTA Y UNO "
words(42,0) = 42
words(42,1) = "CUARENTA Y DOS "
words(43,0) = 43
words(43,1) = "CUARENTA Y TRES "
words(44,0) = 44
words(44,1) = "CUARENTA Y CUATRO "
words(45,0) = 45
words(45,1) = "CUARENTA Y CINCO "
words(46,0) = 46
words(46,1) = "CUARENTA Y SEIS "
words(47,0) = 47
words(47,1) = "CUARENTA Y SIETE "
words(48,0) = 48
words(48,1) = "CUARENTA Y OCHO "
words(49,0) = 49
words(49,1) = "CUARENTA Y NUEVE "
words(50,0) = 50
words(50,1) = "CINCUENTA "
words(51,0) = 51
words(51,1) = "CINCUENTA Y UNO "
words(52,0) = 52
words(52,1) = "CINCUENTA Y DOS "
words(53,0) = 53
words(53,1) = "CINCUENTA Y TRES "
words(54,0) = 54
words(54,1) = "CINCUENTA Y CUATRO "
words(55,0) = 55
words(55,1) = "CINCUENTA Y CINCO "
words(56,0) = 56
words(56,1) = "CINCUENTA Y SEIS "
words(57,0) = 57
words(57,1) = "CINCUENTA Y SIETE "
words(58,0) = 58
words(58,1) = "CINCUENTA Y OCHO "
words(59,0) = 59
words(59,1) = "CINCUENTA Y NUEVE "
words(60,0) = 60
words(60,1) = "SESENTA "
words(61,0) = 61
words(61,1) = "SESENTA Y UNO "
words(62,0) = 62
words(62,1) = "SESENTA Y DOS "
words(63,0) = 63
words(63,1) = "SESENTA Y TRES "
words(64,0) = 64
words(64,1) = "SESENTA Y CUATRO "
words(65,0) = 65
words(65,1) = "SESENTA Y CINCO "
words(66,0) = 66
words(66,1) = "SESENTA Y SEIS "
words(67,0) = 67
words(67,1) = "SESENTA Y SIETE "
words(68,0) = 68
words(68,1) = "SESENTA Y OCHO "
words(69,0) = 69
words(69,1) = "SESENTA Y NUEVE "
words(70,0) = 70
words(70,1) = "SETENTA "
words(71,0) = 71
words(71,1) = "SETENTA Y UNO "
words(72,0) = 72
words(72,1) = "SETENTA Y DOS "
words(73,0) = 73
words(73,1) = "SETENTA Y TRES "
words(74,0) = 74
words(74,1) = "SETENTA Y CUATRO "
words(75,0) = 75
words(75,1) = "SETENTA Y CINCO "
words(76,0) = 76
words(76,1) = "SETENTA Y SEIS "
words(77,0) = 77
words(77,1) = "SETENTA Y SIETE "
words(78,0) = 78
words(78,1) = "SETENTA Y OCHO "
words(79,0) = 79
words(79,1) = "SETENTA Y NUEVE "
words(80,0) = 80
words(80,1) = "OCHENTA "
words(81,0) = 81
words(81,1) = "OCHENTA Y UNO "
words(82,0) = 82
words(82,1) = "OCHENTA Y DOS "
words(83,0) = 83
words(83,1) = "OCHENTA Y TRES "
words(84,0) = 84
words(84,1) = "OCHENTA Y CUATRO "
words(85,0) = 85
words(85,1) = "OCHENTA Y CINCO "
words(86,0) = 86
words(86,1) = "OCHENTA Y SEIS "
words(87,0) = 87
words(87,1) = "OCHENTA Y SIETE "
words(88,0) = 88
words(88,1) = "OCHENTA Y OCHO "
words(89,0) = 89
words(89,1) = "OCHENTA Y NUEVE "
words(90,0) = 90
words(90,1) = "NOVENTA "
words(91,0) = 91
words(91,1) = "NOVENTA Y UNO "
words(92,0) = 92
words(92,1) = "NOVENTA Y DOS "
words(93,0) = 93
words(93,1) = "NOVENTA Y TRES "
words(94,0) = 94
words(94,1) = "NOVENTA Y CUATRO "
words(95,0) = 95
words(95,1) = "NOVENTA Y CINCO "
words(96,0) = 96
words(96,1) = "NOVENTA Y SEIS "
words(97,0) = 97
words(97,1) = "NOVENTA Y SIETE "
words(98,0) = 98
words(98,1) = "NOVENTA Y OCHO "
words(99,0) = 99
words(99,1) = "NOVENTA Y NUEVE "
words(100,0) = 100
words(100,1) = "CIENTO "
words(101,0) = 200
words(101,1) = "DOSCIENTOS "
words(102,0) = 300
words(102,1) = "TRESCIENTOS "
words(103,0) = 400
words(103,1) = "CUATROCIENTOS "
words(104,0) = 500
words(104,1) = "QUINIENTOS "
words(105,0) = 600
words(105,1) = "SEISCIENTOS "
words(106,0) = 700
words(106,1) = "SETECIENTOS "
words(107,0) = 800
words(107,1) = "OCHOCIENTOS "
words(108,0) = 900
words(108,1) = "NOVECIENTOS "
words(109,0) = 1000
words(109,1) = "MIL "
words(110,0) = 100000
words(110,1) = "Lakh "
words(111,0) = 10000000
words(111,1) = "MILLION "

'function to convert numbers to words
Function cWord(num)
 Dim leftToProcess, wrkngWord, i

 IF num = 0 THEN
  cWord = ""
  EXIT FUNCTION
 END IF

 leftToProcess = cDbl(num)
 
 For i = 111 to 1 step -1
  If leftToProcess/cLng(words(i,0)) >= 1 Then
   If i >= 109 Then
    wrkngWord = wrkngWord & cWord(Fix(leftToProcess/cLng(words(i,0)))) & words(i,1)
   Else
    wrkngWord = wrkngWord & words(i,1)
   End If
   leftToProcess = leftToProcess - (Fix(leftToProcess/cLng(words(i,0))) * cLng(words(i,0)))
  End If

  If leftToProcess < 1 And leftToProcess > 0 Then
   cWord = wrkngWord
   Exit For
  End If
 Next
 
 cWord = wrkngWord
End Function
%>

Invoking procedure:
  <tr>
    <td width="153">&nbsp;</td>
    <% rsGTotal = oRSbt("GrndTotal") %>
    <td width="418" class="f" rowspan="2" valign="middle">**
<%
Dim strInput
strInput = rsGTotal
rsGTotalStr = ""
IF strInput <> "" THEN
  IF instr(strInput,".") > 0 THEN
    rsGTotalStr = cWord(Left(strInput,Instr(strInput,".")-1)) & " PESOS " & Mid(strInput,Instr(strInput,".")+1) & "/100MN"
  Else
    rsGTotalStr = cWord(strInput) & " PESOS"
  End IF
rsBadPhrase = "CIENTO PESOS"
rsGoodPhrase = "CIEN PESOS"
rsGTotal = Replace(rsGTotalStr, rsBadPhrase, rsGoodPhrase)
Response.Write rsGTotal
End If
%> **</td>

No matter what I do to the replace it never recognises the string

Any suggestions

With regards and a happy new year to you all,

Paul
Mexico
Reply By: mndrx Reply Date: 1/8/2004 1:52:54 AM
hi, i think you have more than one space between CIENTO and PESOS,
so try this:

rsGTotalStr = TRIM(cWord(strInput)) & " PESOS"


(also trim more higher in your code if you have decimals.

good luck!
mndrx
Reply By: neo_jakey Reply Date: 1/8/2004 9:00:24 AM
Thanks mndrx, it worked a treat...!  Appreciate your help...

Go to topic 8346

Return to index page 973
Return to index page 972
Return to index page 971
Return to index page 970
Return to index page 969
Return to index page 968
Return to index page 967
Return to index page 966
Return to index page 965
Return to index page 964