|
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"> </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...
|
|