Classic ASP 데이터형 포맷 및 유효성 체크 함수
'*************************************************************** '* Function Name : fn_IsValidDate '* Function 기능 : 날짜 유효성 체크 '* parameter 설명 : 날짜 문자열(yyyymmdd) '* return값 설명 : 유효한날짜 여부(true/false) '*************************************************************** FUNCTION fn_IsValidDate(sDate) dim sYy dim sMm dim sDd sYy = mid(sDate,1,4) sMm = mid(sDate,5,2) sDd = mid(sDate,7) sDate = sYy & "-" & sMm & "-" & sDd if isDate(sDate) then fn_IsValidDate = true else fn_IsValidDate = false end if END FUNCTION '*************************************************************** '* Function Name : fn_IsValidHHMM '* Function 기능 : 시간 유효성 체크 '* parameter 설명 : 시간 문자열(hhmm) '* return값 설명 : 유효한시간 여부(true/false) '*************************************************************** FUNCTION fn_IsValidHHMM(sTime) dim sHh dim sMm sHh = mid(sTime,1,2) sMm = mid(sTime,3,2) If (isNumeric(sHh) And (CInt(sHh) >= 0) And (CInt(sHh) <= 23)) And _ (isNumeric(sMm) And (CInt(sMm) >= 0) And (CInt(sMm) <= 59)) Then fn_IsValidHHMM = true else fn_IsValidHHMM = false End If END FUNCTION '*************************************************************** '* Function Name : fn_IsValidHHMMSS '* Function 기능 : 시간 유효성 체크 '* parameter 설명 : 시간 문자열(hhmmss) '* return값 설명 : 유효한시간 여부(true/false) '*************************************************************** FUNCTION fn_IsValidHHMMSS(sTime) dim sHh dim sMm sHh = mid(sTime,1,2) sMm = mid(sTime,3,2) sSs = mid(sTime,5,2) If (isNumeric(sHh) And (CInt(sHh) >= 0) And (CInt(sHh) <= 23)) And _ (isNumeric(sMm) And (CInt(sMm) >= 0) And (CInt(sMm) <= 59)) And _ (isNumeric(sSs) And (CInt(sSs) >= 0) And (CInt(sSs) <= 59)) Then fn_IsValidHHMMSS = true else fn_IsValidHHMMSS = false End If END FUNCTION '*************************************************************** '* Function Name : fn_UrlEncode '* Function 기능 : 문자열 encoding '* parameter 설명 : 문자열 '* return값 설명 : 인코딩된 문자열 '*************************************************************** FUNCTION fn_UrlEncode(sStr) fn_UrlEncode = Server.URLEncode(sStr) END FUNCTION '*************************************************************** '* Function Name : fn_URLDecode '* Function 기능 : 문자열 decoding '* parameter 설명 : 문자열 '* return값 설명 : 디코딩된 문자열 '*************************************************************** FUNCTION fn_UrlDecode(sStr) Dim sRet, sTemp, i, ReX, sChar ' 정규 표현식, %00 ~ %FF 까지 걸러냄 Set ReX = New RegExp ReX.IgnoreCase = True ReX.Pattern = "^%[0-9a-f][0-9a-f]$" ' 변수 초기화 sStr = Replace(sStr, "+", " ") ' URLDecode는 공백을 더하기 기호로 바꿈 sRet = "" For i = 1 To Len(sStr) sChar = Mid(sStr, i, 3) ' 세 글자씩 끊어 와서 If ReX.Test(sChar) Then ' %00 ~ %FF 형태일 때 If CInt("&H" & Mid(sStr, i + 1, 2)) < 128 Then ' 아스키문자인 경우, 즉 기호 등 한글이 아닌 경우 sRet = sRet & Chr(CInt("&H" & Mid(sStr, i + 1, 2))) i = i + 2 ' 잘라낸 만큼 뒤로 이동 Else ' 한글인 경우 뒤의 세글자를 더 잘라 옴 sRet = sRet & Chr(CInt("&H" & Mid(sStr, i + 1, 2) & Mid(sstr, i + 4, 2))) i = i + 5 ' 잘라낸 만큼 뒤로 이동 End If Else ' 인코딩 되지 않은 경우. 대개 영문자나 숫자 sRet = sRet & Mid(sStr, i, 1) End If Next fn_UrlDecode = sRet END FUNCTION '*************************************************************** '* Function Name : fn_Len '* Function 기능 : 한글 포함하는 문자열의 길이 '* parameter 설명 : sStr :문자열 '* return값 설명 : 길이 '*************************************************************** Function fn_Len(sStr) dim nLen, nResult nLen = Len(sStr) nResult = 0 for i = 1 to nLen charAt = Mid(sStr, i, 1) if Asc(charAt) > 0 and Asc(charAt) < 255 then nResult = nResult + 1 else nResult = nResult + 2 end if next fn_Len = nResult End Function '*************************************************************** '* Function Name : fn_StrCut '* Function 기능 : 문자열 자르기 '* parameter 설명 : sStr : 문자열 nLength:길이한도 '* sTrail:자른후 뒤에 붙일 문자열 '* bUse :trail 사용여부(bool) '* return값 설명 : 없음 '*************************************************************** FUNCTION fn_StrCut(sStr, nLength, sTrail, bUse) if len(sStr) < nLength then fn_StrCut = sStr exit FUNCTION end if sStr = fn_Substr(sStr, 1, nLength) if bUse = true then sStr = sStr & sTrail end if fn_StrCut = sStr END FUNCTION '*************************************************************** '* Function Name : fn_Substr '* Function 기능 : 한글 포함하는 문자열의 길이 '* parameter 설명 : sStr :문자열 '* return값 설명 : 길이 '*************************************************************** Function fn_Substr(sStr, nFrom, nTo) dim nLen, nResult, nPos, nStartPos, nEndPos nLen = fn_Len(sStr) nPos = 0 nStartPos = 0 nEndPos = 0 if nFrom > nLen then sResult = "" else if nFrom >= 1 Then for i = 1 to nFrom if nFrom <> 0 and (Asc(Mid(sStr, i, 1)) > 255 or Asc(Mid(sStr, i, 1)) < 0) then nPos = nPos + 1 end if next End If nStartPos = nFrom - nPos if nStartPos = 0 Then nStartPos = 1 End If nPos = 0 if nTo > nLen then nEndPos = Len(sStr) else for i = 1 to nTo if nFrom <> 0 and (Asc(Mid(sStr, i, 1)) > 255 or Asc(Mid(sStr, i, 1)) < 0) then nTo = nTo - 2 Else nTo = nTo - 1 end if nPos = nPos + 1 if nTo <= 0 Then exit for End If next nEndPos = nPos end if nEndPos = nEndPos - nStartPos sResult = Mid(sStr, CInt(nStartPos), CInt(nEndPos)) end if fn_Substr = sResult End Function '*************************************************************** '* Function Name : fn_GetLong '* Function 기능 : 정수형 금액숫자의 ',' 포맷 생성 '* parameter 설명 : sLongValue :정수형 금액숫자 '* return값 설명 : 123,456,789 형태의 문자열 '*************************************************************** Function fn_GetLong(nLongValue) dim sResult If isNull(nLongValue) Then nLongValue = 0 End If sResult = FormatNumber(CDbl(nLongValue), 0) fn_GetLong = sResult End Function '*************************************************************** '* Function Name : fn_GetDouble '* Function 기능 : 실수형 금액숫자의 ',' 포맷 생성 '* parameter 설명 : nDoubleValue :실수형 금액숫자, nFrac : 소수점 이하 자리수 '* return값 설명 : 123,456,789.00 형태의 문자열 '*************************************************************** Function fn_GetDouble(nDoubleValue, nFrac) dim sResult If isNull(nDoubleValue) Then nDoubleValue = 0 End If sResult = FormatNumber(CDbl(nDoubleValue), nFrac) fn_GetDouble = sResult End Function '*************************************************************** '* Function Name : fn_GetDate '* Function 기능 : 날짜 포맷 생성 '* parameter 설명 : sDate :날짜 문자열 '* return값 설명 : 0000/00/00 형태의 문자열 '*************************************************************** Function fn_GetDate(sDate) dim sTempValue, sResult, nLen, sSeparate if isNull(sDate) or Trim(sDate) = "" then sResult = "" else sSeparate = "-" sTempValue = Trim(sDate) sTempValue = Replace(Replace(sTempValue, "-", ""), "/", "") nLen = Len(sTempValue) ' 1234567890 sTempValue = sTempValue & " " sResult = Mid(sTempValue, 1, 4) & sSeparate & Mid(sTempValue, 5, 2) & sSeparate & Mid(sTempValue, 7, 2) sResult = Trim(sResult) end if fn_GetDate = sResult End Function '*************************************************************** '* Function Name : fn_GetHhmm '* Function 기능 : 시간 포맷 생성 '* parameter 설명 : sTime :날짜 문자열 '* return값 설명 : 12:25 형태의 문자열 '*************************************************************** Function fn_GetHhmm(sTime) dim sTempValue, sResult, nLen sTempValue = Trim(sTime) nLen = Len(sTempValue) if (sTempValue = "" or nLen = 0) then sResult = "" else ' 1234 sTempValue = sTempValue & " " sResult = Mid(sTempValue, 1, 2) & ":" & Mid(sTempValue, 3, 2) sResult = Trim(sResult) end if fn_GetHhmm = sResult End Function '*************************************************************** '* Function Name : fn_GetHhmmss '* Function 기능 : 시간 포맷 생성 '* parameter 설명 : sTime :날짜 문자열 '* return값 설명 : 12:25:12 형태의 문자열 '*************************************************************** Function fn_GetHhmmss(sTime) dim sTempValue, sResult, nLen sTempValue = Trim(sTime) nLen = Len(sTempValue) if (sTempValue = "" or nLen = 0) then sResult = "" else ' 123456 sTempValue = sTempValue & " " sResult = Mid(sTempValue, 1, 2) & ":" & Mid(sTempValue, 3, 2) & ":" & Mid(sTempValue, 5, 2) sResult = Trim(sResult) end if fn_GetHhmmss = sResult End Function '*************************************************************** '* Function Name : fn_GetSdNo '* Function 기능 : 사업자등록번호 포맷 생성 '* parameter 설명 : sTime 사업자등록번호 문자열 '* return값 설명 : 600-00-00000 형태의 문자열 '*************************************************************** Function fn_GetSdNo(sStr) dim sTempValue, sResult, nLen sTempValue = Trim(sStr) nLen = Len(sTempValue) if (sTempValue = "" or nLen = 0) then sResult = "" else ' 1234567890 sTempValue = sTempValue & " " sResult = Mid(sTempValue, 1, 3) & "-" & Mid(sTempValue, 4, 2) & "-" & Mid(sTempValue, 6, 5) sResult = Trim(sResult) end if fn_GetSdNo = sResult End Function '*************************************************************** '* Function Name : fn_GetIdNo '* Function 기능 : 주민등록번호 포맷 생성 '* parameter 설명 : sTime 주민등록번호 문자열 '* return값 설명 : 123456-1234567 형태의 문자열 '*************************************************************** Function fn_GetIdNo(sStr) dim sTempValue, sResult, nLen sTempValue = Trim(sStr) nLen = Len(sTempValue) if (sTempValue = "" or nLen = 0) then sResult = "" elseif (Mid(sTempValue, 1, 1) = "F") then '외국인은 포맷 설정 안함 sResult = sStr else ' 1234567890123 sTempValue = sTempValue & " " sResult = Mid(sTempValue, 1, 6) & "-" & Mid(sTempValue, 7, 7) sResult = Trim(sResult) end if fn_GetIdNo = sResult End Function '/*********************************************************************** '* Function Name : fn_RemoveChar '* Function 기능 : 문자열에서 특정 문자 삭제 '* parameter 설명: sStr : 문자열, sChr :제거할 문자 '* return값 설명 : 특정문자를 제거한 문자열값 '************************************************************************/ Function fn_RemoveChar(sStr, sChr) dim nlen dim sTemp nlen = Len(sStr) sTemp = "" For i=1 to nlen If Mid(sStr,i , 1) <> sChr Then sTemp = sTemp & Mid(sStr, i, 1) End If Next fn_RemoveChar = sTemp End Function '/*********************************************************************** '* Function Name : fn_RemoveChar '* Function 기능 : 문자열에서 특정 문자 삭제 '* parameter 설명: sStr : 문자열, sChr :제거할 문자 '* return값 설명 : 특정문자를 제거한 문자열값 '************************************************************************/ Function fn_ObjsRemoveChar(objs, sChr) dim nlen dim sTemp For j=1 to ubound(objs) nlen = Len( objs(j) ) sTemp = "" For i=1 to nlen If Mid(sStr,i , 1) <> sChr Then sTemp = sTemp & Mid(sStr, i, 1) End If Next objs(j) = sTemp Next End Function '/*********************************************************************** '* Function Name : fn_ArrayCmp '* Function 기능 : 배열의 값에서 문자열 찾기 '* parameter 설명: sStr : 찾을문자열, aStr:문자열 배열 '* return값 설명 : True : 있음, False :없음 '************************************************************************/ Function fn_ArrayCmp(sStr, aStr) Dim str For Each str In aStr If sStr = str Then fn_ArrayCmp = True Exit Function End If Next fn_ArrayCmp = False End Function '/*********************************************************************** '* Function Name : fn_JuMinChk '* Function 기능 : 주민등록번호 체크 '* parameter 설명: sNo : 검사할문자열 '* return값 설명 : True : 정상, False :오류 '************************************************************************/ Function fn_JuMinChk(sNo) Dim sResult, sStr, sChkdigit, nHap, nChk If Len( sNo ) <> 13 Then fn_JuMinChk = false Exit Function End If sStr = Array("5", "6", "7", "8") If Mid(sNo, 1, 1) = "F" Then fn_JuMinChk = true Exit Function End If If fn_ArrayCmp(Mid(sNo, 7, 1), sStr ) Then sResult = True fn_JuMinChk = true Exit Function End If sChkDigit = "234567892345" nHap = 0 For i = 1 to 12 If Mid(sNo, i, 1) > "9" or Mid(sNo, i, 1) < "0" Then sResult = False fn_JuMinChk = sResult Exit Function End if nChk = CInt(Mid(sChkDigit, i, 1)) * CInt(Mid(sNo, i, 1)) nHap = nHap + nChk Next nHap = nHap MOD 11 If nHap = 1 Then nHap = 11 End If If nHap = 0 Then nHap = 10 End If If CInt(Mid(sNo, 13, 1)) = (11 - nHap) Then sResult = True Else sResult = False End If fn_JuMinChk = sResult End Function '*************************************************************** '* Function Name : fn_PadL '* Function 기능 : 문자열을 우측정렬로 위치시키고 좌측의 여백은 특정 문자로 채운다. '* parameter 설명 : sString: 입력문자열, nNum :총 문자열수, sChar: 여백에 채울 문자 '* return값 설명 : fn_PadL('ABCDE', 8, ' ') =>' ABCDE' '*************************************************************** Function fn_PadL(sString, nNum, sChar) Dim sResult,sStr, nDis sStr = sString If Len(sString) >= nNum Then sResult = Mid(sStr, 1, nNum) else nDis = nNum - Len(sString) For i = 1 to nDis sStr = sChar & sStr Next sResult = sStr End If fn_PadL = sResult End Function '*************************************************************** '* Function Name : fn_PadR '* Function 기능 : 문자열을 좌측정렬로 위치시키고 우측의 여백은 특정 문자로 채운다. '* parameter 설명 : sString: 입력문자열, nNum :총 문자열수, sChar: 여백에 채울 문자 '* return값 설명 : fn_PadR('ABCDE', 8, ' ') =>'ABCDE ' '*************************************************************** Function fn_PadR(sString, nNum, sChar) Dim sResult,sStr, nDis sStr = sString If Len(sString) >= nNum Then sResult = Mid(sStr, 1, nNum) else nDis = nNum - Len(sString) For i = 1 to nDis sStr = sStr & sChar Next sResult = sStr End If fn_PadR = sResult End Function