problem with replace tow array - نوشته شده در (853 Views)
Starting Member
sadra
مطلب: 30
30
Hi, who can help me?
i have a function for convert a numeric value to abc value in tow arrays but not work correctly

Code:

function NumberToABC(pString)
fString = trim(pString)
if fString = "" or IsNull(fstring) then
exit function
else

txtABCWords = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z" ' 26
txtEquivalentReplace = "1,2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100,200,300,400,500,600,700,800" ' 26

aWords = split(txtABCWords, ",")
eReplace = split(txtEquivalentReplace, ",")

for i = 0 to ubound(eReplace)
fString = Replace(fString, eReplace(i), aWords(i), 1, -1, 1)
next
end if
NumberToABC = fString
end function

example: for "NumberToABC("60")"
in correct form must have "O" but his function return "F"
Instead of returning the letter "O" letter "F" on returns.
Can anyone help me?
how soon is too late
 پیش‌فرض مرتب‌سازی برای تاریخ DESC به معنی جدیدترین است  
 تعداد در صفحه 
نوشته شده در
Forum Admin
HuwR
مطلب: 20611
20611
it returns F because the first thing it finds to replace is 6 not 60, you need to reverse your for loop
try

for i = ubound(eReplace) to 0 Step -1
fString = Replace(fString, eReplace(i), aWords(i), 1, -1, 1)
next
نوشته شده در
Starting Member
sadra
مطلب: 30
30
Tanx Mr HuwR... Fixed
how soon is too late
نوشته شده در
Advanced Member
Carefree
مطلب: 4224
4224
The way it's written, it should return "F0". An alternative approach would be something like this. With this method, it wouldn't matter where the value fell in the string or even if the values weren't in order.
Code:

<%
Dim strABC, strP, strF, intI, intJ, intK, intL
strP=Request.Form("NValue")
strF=Trim(strP)
If strF > "" Then
NumberToABC(strF)
End If
Response.Write "<form action=""n2a.asp"" method=""post"">" & vbNewLine & _
" <table align=""center"" width=""300px;"" bgColor=""white"" border=""0"" style=""border-collapse:collapse;"" cellpadding=""0"" cellspacing=""0"">" & vbNewLine & _
" <tr valign=""middle"">" & vbNewLine & _
" <td align=""center"" width=""100%"" bgColor=""lightblue"">" & vbNewLine & _
" <table align=""center"" width=""100%"" bgColor=""black"" border=""1"" style=""border-collapse:collapse;"" cellpadding=""4"" cellspacing=""1"">" & vbNewLine & _
" <tr valign=""middle"">" & vbNewLine & _
" <td align=""center"" colspan=""2"" bgColor=""lightblue"">" & vbNewLine & _
" <font face=""arial"" size=""6"" color=""navy""><b>Number to String</b>" & vbNewLine & _
" </font>" & vbNewLine & _
" </td>" & vbNewLine & _
" </tr>" & vbNewLine & _
" <tr valign=""middle"">" & vbNewLine & _
" <td align=""right"" width=""50%"" bgColor=""#D7954B"">" & vbNewLine & _
" <font face=""arial"" size=""4"" color=""#4F0F00"">Numeric Value: " & vbNewLine & _
" </font>" & vbNewLine & _
" </td>" & vbNewLine & _
" <td align=""left"" width=""50%"" bgColor=""#FFFFFF"">" & vbNewLine & _
" <input type=""text"" name=""NValue"" value=""" & Request.Form("NValue") & """ size=""20"" maxlength=""10"">" & vbNewLine & _
" </td>" & vbNewLine & _
" </tr>" & vbNewLine
If strABC > "" Then
Response.Write " <tr valign=""middle"">" & vbNewLine & _
" <td align=""right"" width=""50%"" bgColor=""#D7954B"">" & vbNewLine & _
" <font face=""arial"" size=""4"" color=""#4F0F00"">Alpha Value: " & vbNewLine & _
" </font>" & vbNewLine & _
" </td>" & vbNewLine & _
" <td align=""left"" width=""50%"" bgColor=""#FFFFFF"">" & strABC & vbNewLine & _
" </td>" & vbNewLine & _
" </tr>" & vbNewLine
End If
Response.Write " </table>" & vbNewLine & _
" </td>" & vbNewLine & _
" </tr>" & vbNewLine & _
" <tr valign=""middle"">" & vbNewLine & _
" <td align=""center"" width=""100%"">" & vbNewLine & _
" <input type=""submit"" value=""Submit"">" & vbNewLine & _
" </td>" & vbNewLine & _
" </tr>" & vbNewLine & _
" </table>" & vbNewLine & _
"</form>" & vbNewLine
Response.End

Function NumberToABC(strF)
If strF = "" or IsNull(strF) Then
Exit Function
Else
txtABCWords = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"
txtEquivalentReplace = "1,2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100,200,300,400,500,600,700,800"
If Instr(txtEquivalentReplace,strF) Then
intJ = 0: intK = 0
For intI = 1 to len(txtEquivalentReplace)
If mid(txtEquivalentReplace,intI,1) = "," Then
intJ=intJ+1
If mid(txtEquivalentReplace,intI+1,len(strF))=strF Then
intK=intJ
intL=(intK*2)+1
strABC = mid(txtABCWords,intL,1)
Exit For
End If
End If
Next
Else
Response.Write "Number not found."
End If
End If
End Function
%>
نوشته شده در
Starting Member
sadra
مطلب: 30
30
Tanx Mr "Carefree" for your try and your times
how soon is too late
 
شما باید یک متن وارد کنید