Escolar Documentos
Profissional Documentos
Cultura Documentos
Funcin
IniciaCon
TerminaCon
Ancho
PosIni
PosEnd
Insertar
Truncar
AlinearIzq
AlinearDer
Centrar
Replicate
Remover
QuitarCad
Amplia
Reemplazar
Divide
Divide2
Extrae
Izquierda
Derecha
Minusculas
Mayusculas
Frase
LTrim
RTrim
AllTrim
Blancos
Contiene
Compara
AscII
txtLIKE
Inverso
Soundex
SinAcentos
ContarCad
Encripta
Descripta
EncrypKey
DecrypKey
EncodeBase64
DecodeBase64
GetDelimited
FilterDup
MayorCad
MenorCad
OrdenaAsc
OrdenaDesc
Palabras
StripControlChars
GetTokenIdx
QuitarEspaciosDup
CheckNumeric
FilterString
SoloAlfanumerico
SoloNumeros
CountLineas
GetLineString
ConcatenaStrings
ConcatenaStrings2
IsStringLower
IsControl
IsStringUpper
IsDigit
IsLetter
Descripcin
DevuelvesieltextoiniciaconunasubcadenaXX
DevuelvesieltextoterminaconunasubcadenaXx
Devuelveellargoenbytesdeltexto
PosiciondelaprimeraocurrenciadeunaSubcad.
PosiciondelaultimaocurrenciadeunaSubcad
Insertaunasubcadena,consoportededesplazamientoytruncado
Devuelveunasubcadenatruncadaalanchoindicado
Devuelveunacadenaalineadaalaizquierda,conWildCards
Devuelveunacadenaalineadaaladerecha,conWildCards
Devuelveunacadenaalineadaalcentro,conWildCards
DevuelveunCaracterreplicadoXXveces
Remuevexbytesdeunacadena,apartirdexposicin
RemuevetodaslasocurrenciasdelaSubcadena
Devuelveunacadena,conuncaracterseparadorentrecadabyte
ReemplazatodaslasocurrenciasdelaSubcadena
DivideunaCadena,conunseparadorespecifico
Divideunacadena,consoportedecorchetesentresubcadenas
ExtraeunaSubcadena,apartirdexxposicion,yXXbytes.
Extraexxbytesalaizquierdadelacadena.
Extraexxbytes,aladerechadelacadena
Convierteaminusculastodalacadena.
Convierteamayusculastodalacadena.
ConvierteaMayusculaslasprimerasletrasdecadapalabra.
Eliminaespaciosenblancoalaizquierdadeunacadena.
Eliminaespaciosenblancoaladerechadeunacadena.
Eliminaespaciosenblancoaambosladosdelacadena.
Eliminatodoslosespaciosenblanco,dentroyfueradelacadena.
Verificasilacadenaesigualalasubcadenaindicada.
DevuelveelcdigoAscIIdelcaracterxxdentrodelacadena.
Verificasilasubcadenaseparecealacadena.
Devuelvelacadenainversa
Devuelveelcdigofonticodelacadena,parahacercomparacionesybsquedas.
Devuelveunacadena,sinpalabrasacentuadas(mayusculasyinusculas)
Cuentaelnumerodevecesqueapareceunacadenadentrodeotra
Encriptaelcontenidodelacadena.
Descriptaunacadenaencriptadapreviamente.
Encriptaconunpassword.
Descriptaconunpassword.
EncriptaconelalgoritmoBase64
DesEncriptaconelalgoritmoBase64
Extraeuntextodelimitadodentrodelacadena.
Eliminaloscaracteresduplicadosenunacadena
OrdenalacadenademayoramenorvalorASCII
OrdenalacadenademenoramayorvalorASCII
Ordenalacadenaenformaascendente
Ordenalacadenaenformadescendente
Cuentaelnumerodepalabrasdelacadenaconsoportedesignos
Eliminatodosloscaracteresdecontroldeunacadena
Retornaunasubcadenaqueseencuentradespuesdelacadenaindicada
Eliminalosespaciosduplicadosdentrodeunacadena
Verificasiunacadenatieneformatodenumero
Filtraunacadenaasololoscaracteresindicados.
Devuelveunacadenasloconcaracteresalfanumricos
Devuelveunacadenasloconcaracteresnumricos
Retornaelnumerodelineasdentrodeunstring
Retornaelstringqueocupalalineaxxxdentrodelacadena
Concatenaunarraydeobjetos,enunstring
Concatenaunarraydesolostrings,enunstring
Verificasielstringcontienesolominsculas
Verificasilacadenacontienesolomayusculas
Verificasielcaracterdeunacadenaesuncaracterdecontrol
Verificasielcaracterdeunacadenaesundigito
Verificasielcaracterdeunacadenaesunaletra
Dev.EdwinRiveraPuente
Pgina1
IsLetterOrDigit
IsCharLower
IsCharNumber
IsCharPuntuacion
IsCharSeparator
IsCharSymbol
IsCharUpper
IsCharWhite
CleanAmpersand
CleanQuotes
ContainsAlpha
CountDelimitedWords
CountOccurrences
CountWords
EncloseString
GetRandomPassword
GetDelimitedWord
NumberSuffix
TextToHTML
Verificasielcaracterdeunacadenaesnumerooletra
Verificasielcaracterdeunacadenaesminscula
Verificasielcaracterdelacadenaesunnumero
Verificasielcaracterdelacadenaessignodepuntuacin
Verificasielcaracterdelacadenaesunseparador
Verificasielcaracterdelacadenaesunsmbolo
Verificasielcaracterdelacadenaesmayscula
Verificasielcaracterdelacadenaesunespacioenblanco
Limpiarloscaracteres&deunacadena
Reemplaza""porapostrofessimples
Verificasiexisteuncaracteresalfanumericoenlacadena
Cuentaelnumerodepalabrasentredelimitadores
Cuentaelnumerodeocurrenciasdeunstringdentrodeotro
Cuentaelnumerodepalabrasenunstring(separadosporespacios)
Agregaloscaracteresindicadosalprincipioyalfinaldelstring
Retornaunpasswordaleatoreo
Devuelvelacadenaqueseencuentradentrodellimitadorindicado
Convierteunnumeroensurespectivoformatodeorden:1st,2nd,etc.
ConvierteeltextoasuformatodeHTML
ImportsSystem.Text
ImportsSystem.Math
ImportsVB=Microsoft.VisualBasic
PublicClassCadenas
VERIFICASIUNACADENACOMIENZACONLAQUESEINDIQUE
PublicSharedFunctionIniciaCon(ByValcadenaAsString,ByValBuscarAsString)AsBoolean
Returncadena.StartsWith(Buscar)
EndFunction
VERIFICASIUNACADENATERMINACONCIERTOSCARACTERES
PublicSharedFunctionTerminaCon(ByValcadenaAsString,ByValbuscarAsString)AsBoolean
Returncadena.EndsWith(buscar)
EndFunction
'
DEVUELVEELLARGODEUNACADENA
'
PublicSharedFunctionAncho(ByValcadenaAsString)AsLong
Returncadena.Length
EndFunction
'RETORNA LA POSICION DE LA PRIMERA OCURRENCIA DEL CARCTER RETORNA 0: SI CAR NO EXISTE DENTRO DE LA CADENA
FUNCIONDEBASE1NOTA:DISTINGUEMINUSCULASDEMAYUSCULAS
PublicSharedFunctionPosIni(ByValcadenaAsString,ByValBuscarAsString)AsInteger
Returncadena.IndexOf(Buscar)+1
EndFunction
'RETORNA LA POSICION DE LA ULTIMA OCURRENCIA DEL CARCTER RETORNA 0: SI CAR NO EXISTE DENTRO DE LA CADENA
FUNCIONDEBASE1NOTA:DISTINGUEMINUSCULASDEMAYUSCULAS
PublicSharedFunctionPosEnd(ByValcadenaAsString,ByValBuscarAsString)AsInteger
Returncadena.LastIndexOf(Buscar)+1
EndFunction
INSERTA CUALQUIER OBJETO EN LA CADENA, EN LA POSICION INDICADA BASE 1: OPCIONALMENTE, PUEDE DESPLAZAR EL
CONTENIDO INTERNO. Si Posicion es mayor que ancho de cadena original, o es menor que 1: NO SE PUEDE INSERTAR: RETORNA
CADENAORIGINALNOTA:Esmejorusarestarutina encadenascortasSise quiere utilizarlaparaprocesarunarchivodetexto, Es
mejor
PublicSharedFunctionInsertar(ByValcadenaAsString,ByValposicionAsInteger,ByValSubcadAsString,_
Dev.EdwinRiveraPuente
Pgina2
OptionalByValdesplazarAsBoolean=False,OptionalByValtruncarAsBoolean=True)AsString
posicion=posicion1'readecuarabase0
DimnLargoOriginalAsInteger=cadena.Length
DimcResultAsString
Try
IfdesplazarThen
cResult=cadena.Insert(posicion,Subcad)
Else
Subcad=Subcad.Substring(0,nLargoOriginalposicion)
cResult=cadena.Remove(posicion,Subcad.Length)
cResult=cResult.Insert(posicion,CType(Subcad,String))
EndIf
IftruncarThen
ReturncResult.ToString.Substring(0,nLargoOriginal)
Else
ReturncResult.ToString
EndIf
CatcherrorsAsException
Returncadena
EndTry
EndFunction
'TRUNCARUNACADENA,AUNLARGODETERMINADO.
PublicSharedFunctionTruncar(ByValcadenaAsString,ByValnlargoAsInteger)AsString
Returncadena.Substring(0,nlargo)
EndFunction
'ALINEAALAizquierdaUNACADENA,RELLENANDOCONUNCARACTERXX
PublicSharedFunctionAlinearIzq(ByValcadenaAsString,ByValcarAsString,ByValtamAsInteger)AsString
Returncadena.PadLeft(tam,car)
EndFunction
'ALINEAALADERECHAUNACADENA,RELLENANDOCONUNCARACTERXX
PublicSharedFunctionAlinearDer(ByValcadenaAsString,ByValcarAsString,ByValtamAsInteger)AsString
Returncadena.PadRight(tam,car)
EndFunction
'
'JUSTIFICALACADENACENTRADA,CONELCARACTERINDICADO
'
PublicSharedFunctionCentrar(ByValcadenaAsString,ByValnLargoAsInteger,OptionalByValCad2AsString="")AsString
DimnNumAsInteger
IfnLargo<cadena.Length+2Then
Returncadena
EndIf
nNum=Round(((nLargocadena.Length)/2),0)
ReturnStrDup(nNum,Cad2)&cadena&StrDup(nNum,Cad2)
EndFunction
'
'DEVUELVEUNACADENAREPLICADAUNXNUMERODEVECES
'
PublicSharedFunctionReplicate(ByValsourceAsString,ByValtimesAsInteger)AsString
DimsbAsNewSystem.Text.StringBuilder(source.Length*times)
DimindexAsInteger
Forindex=1Totimes
sb.Append(source)
Next
Returnsb.ToString()
EndFunction
'ELIMINAUNNUMERODETERMINADODEBYTES,APARTIRDEUNAPOSICIONCOMENZANDOPORLAIZQUIERDA.BASE1
PublicSharedFunctionRemover(ByValcadenaAsString,ByValcuantosAsInteger,ByValposAsInteger)AsString
Returncadena.Remove(pos1,cuantos)
EndFunction
Dev.EdwinRiveraPuente
Pgina3
'
'REMOVERTODOSLOSCARACTERESINDICADOSENUNACADENA
'
PublicSharedFunctionQuitarCad(ByValmicadenaAsString,ByValSubcadAsString)AsString
Returnmicadena.Replace(Subcad,"")
EndFunction
'
'DEVUELVEUNACADENACONELCARACTERINSERTADOamliar("TITULO","")="TITULO"
'
PublicSharedFunctionAmplia(ByValmiCadenaAsString,OptionalByValcad2AsString="")AsString
DimnPosAsLong,Cad3AsString
FornPos=0TomiCadena.Length1
Cad3+=miCadena.Substring(nPos,1)&cad2
Next
ReturnCad3&miCadena.Substring(miCadena.Length,1)
EndFunction
REEMPLAZARTODASLASOCURRENCIASENLACADENA
'
PublicSharedFunctionReemplazar(ByValmicadenaAsString,ByValcadenaAsString,ByValNuevoAsString)AsString
Returnmicadena.Replace(cadena,Nuevo)
EndFunction
'RETORNAUNARRAY,CONLASSUBCADENASDELIMITADASCONUNBYTE
PublicSharedFunctionDivide(ByValMicadenaAsString,ByValParamArraydelim()AsChar)AsString()
ReturnMicadena.Split(delim)
EndFunction
'
'FUNCIONSIMILARASPLIT,PEROCONDELIMITADORESarr()=txt_divide2("[one,two],three,[four,five]","[]")
'into3items,becausecommasinside[]
'
PublicSharedFunctionDivide2(ByValMicadenaAsString,OptionalByValQuotesAsString="""",_
OptionalByValSeparatorAsString=",")AsArrayList
'thisistheresult
DimresAsNewArrayList
'gettheopenandclosechars,escapethemforusinginregularexpressions
DimopenCharAsString=System.Text.RegularExpressions.Regex.Escape(Quotes.Chars(0))
DimcloseCharAsString=System.Text.RegularExpressions.Regex.Escape(Quotes.Chars(Quotes.Length1))
'buildthepatterthatsearchesforbothquotedandunquotedelements
'noticethatthequotedelementisdefinedbygroup#2
'andtheunquotedelementisdefinedbygroup#3
DimpatternAsString="\s*("&openChar&"([^"&closeChar&"]*)"&closeChar&"|([^"&Separator&"]+))\s*"
'searchalltheelements
DimmAsSystem.Text.RegularExpressions.Match
ForEachmInSystem.Text.RegularExpressions.Regex.Matches(Micadena,pattern)
'getareferencetotheunquotedelement,ifit'sthere
Dimg3AsString=m.Groups(3).Value
IfNot(g3IsNothing)AndAlsog3.Length>0Then
'ifthe3rdgroupisnotnull,thentheelementwasn'tquoted
res.Add(g3)
Else
getthequotedstring,butwithoutthequotes
res.Add(m.Groups(2).Value)
EndIf
Next
Returnres
EndFunction
'
'EXTRAEUNASUBCADENADELACADENABASE1:
'
PublicSharedFunctionExtrae(ByValMiCadenaAsString,ByValinicioAsInteger,ByValcuantosAsInteger)AsString
ReturnMiCadena.Substring(inicio1,cuantos)
EndFunction
'
'EXTRAEUNASUBCADENADELACADENA,APARTIRDELAIZQUIERDA
'
Dev.EdwinRiveraPuente
Pgina4
PublicSharedFunctionIzquierda(ByValMiCadenaAsString,ByValcuantosAsInteger)AsString
ReturnMiCadena.Substring(0,cuantos)
EndFunction
'
'EXTRAEUNASUBCADENADELACADENA,APARTIRDELADERECHA
'
PublicSharedFunctionDerecha(ByValMiCadenaAsString,ByValcuantosAsInteger)AsString
ReturnVB.Right(MiCadena,cuantos)
EndFunction
'
'CONVIERTETODALACADENAAMINUSCULAS
'
PublicSharedFunctionMinusculas(ByValMiCadenaAsString)AsString
ReturnMiCadena.ToLower
EndFunction
'
'CONVIERTETODALACADENAAMAYUSCULAS
'
PublicSharedFunctionMayusculas(ByValMiCadenaAsString)AsString
ReturnMiCadena.ToUpper
EndFunction
'
'CONVIERTELACADENALOSPRIMERASLETRAS
'
PublicSharedFunctionFrase(ByValMiCadenaAsString)AsString
ReturnStrConv(MiCadena,vbProperCase)
EndFunction
'
'ELIMINAESPACIOSALAIZQUIERDA
'
PublicSharedFunctionLTrim(ByValMiCadenaAsString)AsString
ReturnMiCadena.TrimStart
EndFunction
'
'ELIMINAESPACIOSALADERECHA
'
PublicSharedFunctionRTrim(ByValmiCadenaAsString)AsString
ReturnmiCadena.TrimEnd
EndFunction
'
'ELIMINAESPACIOSALOSLADOS
'
PublicSharedFunctionAllTrim(ByValMiCadenaAsString)AsString
ReturnMiCadena.Trim
EndFunction
'
'ELIMINARLOSCARACTERESBLANCOSDENTROYFUERADEUNACADENA
'
PublicSharedFunctionBlancos(ByValmiCadenaAsString)AsString
DimnuevaCadenaAsString,cadAsChar
nuevaCadena=miCadena.Trim()'eliminarblancosfueradelacadena
ForEachcadInnuevaCadena
Ifcad<>""Then
nuevaCadena=nuevaCadena&cad
EndIf
Next
ReturnnuevaCadena
EndFunction
'
'VERIFICASIUNACADENAESTACONTENIDADENTRODEOTRA
'
PublicSharedFunctionContiene(ByValsubcadenaAsString,ByValcadOrigenAsString)AsBoolean
ReturnIIf(cadOrigen.IndexOf(subcadena)=1,False,True)
EndFunction
'
VERIFICASIUNACADENAESIGUALAOTRA
'
Dev.EdwinRiveraPuente
Pgina5
PublicSharedFunctionCompara(ByValCadena1AsString,ByValcadena2AsString)AsBoolean
ReturnCadena1.Equals(cadena2)
EndFunction
'
DevuelveelnmeroAscii/ansidelcarcterindicado. BASE1:
'
PublicSharedFunctionAscii(ByValMiCadenaAsString,OptionalByValCualAsInteger=1)AsInteger
ReturnAscW(MiCadena.Substring(Cual1,1))
EndFunction
'
VerificasiunacadenacoincideconelparametroLIKE
'
PublicSharedFunctionTxtLike(ByValcad1AsString,ByValCad2AsString)AsBoolean
Returncad1LikeCad2
EndFunction
'
OBTIENElainversadelacadena
'
PublicSharedFunctionInverso(ByValmiCadenaAsString)AsString
ReturnStrReverse(miCadena)
EndFunction
'
DEVUELVEELCODIGOFONETICODEUNACADENA
'
PublicSharedFunctionSoundex(ByValMiCadenaAsString)AsString
DimwordAsString,ResultAsString,iAsLong,acodeAsInteger
DimdcodeAsInteger,oldCodeAsInteger
word=MiCadena.ToUppersoundexiscaseinsensitive
thefirstletteriscopiedintheresult
Result=VB.Left(MiCadena,1)
oldCode=AscW(Mid("01230120022455012623010202",AscW(word)64))
Fori=1ToLen(word)1
acode=AscW(Mid(word,i,1))64
discardnonalphabeticchars
Ifacode>=1Andacode<=26Then
converttoadigit
dcode=AscW(Mid("01230120022455012623010202",acode,1))
don'tinsertrepeateddigits
Ifdcode<>48Anddcode<>oldCodeThen
Result=Result&ChrW(dcode)
IfLen(Result)=4ThenExitFor
EndIf
oldCode=dcode
EndIf
Next
ReturnResult
EndFunction
'
QUITAACENTOS
'
PublicSharedFunctionSinAcentos(ByValMiCadenaAsString)AsString
DimConAsString,SinAsString,posCadAsLong,iAsLong
DimresultAsString,cadAsString,subsAsString
Con=",,,,,,,,,"'caracteresconacentos
Sin="a,e,i,o,u,A,E,I,O,U"'caracteressinacentos
Fori=0ToMiCadena.Length1'verificartodoslosbytesdelacadena
cad=MiCadena.Substring(i,1)'extraerelbyteindicado
posCad=InStr(Con,cad)'verificarsielbyteesacentuado
IfposCad>0Then'Siesacentuado,entonces
subs=CStr(posCad)'Reemplazarloporelquenoesacentuado
EndIf
result=result+subs'seguirconlasdemasbytes
Next
Returnresult
EndFunction
'
CUENTAELNUMERODEAPARICIONESDELASUBCADENABASE1:
Dev.EdwinRiveraPuente
Pgina6
'
PublicSharedFunctionContarCad(ByValmiCadenaAsString,ByValsearchAsString,OptionalByValstartAsLong=1,_
OptionalByValCompareAsCompareMethod=vbBinaryCompare)AsLong
DimiAsLong,resultAsLong
start=start1'convertirabase1
i=InStr(start,miCadena,search,Compare)
DoWhilei
result=result+1
i=InStr(i+1,miCadena,search,Compare)
Loop
Returnresult
EndFunction
'
ENCRIPTAELCONTENIDODELACADENA
'
PublicSharedFunctionEncripta(ByValMiCadenaAsString)AsString
DimiAsLong,NuevoCaracterAsString,resultAsString
Fori=0ToMiCadena.Length1
'devolverelcodigoasciidelcaracter,maslalongitudtotaldelacadena
NuevoCaracter=ChrW(AscW(Mid(MiCadena.ToString,i,1))+MiCadena.Length)
result=result&NuevoCaracter
Next
Returnresult
EndFunction
'
DESCRIPTAELCONTENIDODELACADENAENCRIPTADA
'
PublicSharedFunctionDescripta(ByValcadenaEncriptadaAsString)AsString
DimiAsLong,RealAsString,resultAsString
Fori=0ToLen(cadenaEncriptada)1
Real=ChrW(AscW(Mid(cadenaEncriptada,i,1))Len(cadenaEncriptada))
result=result&Real
Next
Returnresult
EndFunction
ENCRIPTAUNACADENACONPASSWORD
PublicSharedFunctionEnCryptKey(ByValPstrTextAsString,ByValpstrPassAsString)AsString
DimintpasslenAsInteger
DiminttextlenAsInteger
DimkAsInteger
DimiAsInteger
DimstrencrptAsString
DimcbAsInteger
intpasslen=Len(pstrPass)
Fori=1Tointpasslen
k=k+(Asc(Mid(pstrPass,i,1))*i)'GetKey
Ifk>255Thenk=k255
Nexti
DoWhilek>255
k=k255
Loop
inttextlen=Len(PstrText)
Fori=1Tointtextlen
cb=Asc(Mid(PstrText,i,1))+k'ChangeCurrentByte
Ifcb>255Thencb=cb255
strencrpt=strencrpt+Chr(cb)
k=k+cb
Ifk>255Thenk=k255'UpdateKey
Nexti
Returnstrencrpt'ReturnResulStrEncrpt
EndFunction
DESCRIPTAUNACADENAQUETIENEPASSWORD
PublicSharedFunctionDeCryptKey(ByValPstrTextAsString,ByValpstrPassAsString)AsString
Dev.EdwinRiveraPuente
Pgina7
DimintpasslenAsInteger
DiminttextlenAsInteger
DimkAsInteger
DimiAsInteger
DimstrdryptAsString
DimcbAsInteger
intpasslen=Len(pstrPass)
Fori=1Tointpasslen
k=k+(Asc(Mid(pstrPass,i,1))*i)
Ifk>255Thenk=k255'GetKey
Nexti
DoWhilek>255
k=k255
Loop
inttextlen=Len(PstrText)
Fori=1Tointtextlen
cb=Asc(Mid(PstrText,i,1))k'ChangeCurrentByte
Ifcb<0Thencb=cb+255
strdrypt=strdrypt+Chr(cb)
k=k+Asc(Mid(PstrText,i,1))
Ifk>255Thenk=k255'UpdateKey
Nexti
Returnstrdrypt'ReturnResulStrDecrpt
EndFunction
'
ENCRIPTAYDESCRIPTALACADENA,CODIGODE64BITS.
'
Returnstheinputstringencodedtobase64
PublicSharedFunctionEncodeBase64(ByValmiCadenaAsString)AsString
DimstrBytes()AsByte=System.Text.Encoding.UTF8.GetBytes(miCadena)
ReturnSystem.Convert.ToBase64String(strBytes)
EndFunction
PublicSharedFunctionDecodeBase64(ByValinputAsString)AsString
DimstrBytes()AsByte=System.Convert.FromBase64String(input)
ReturnSystem.Text.Encoding.UTF8.GetString(strBytes)
EndFunction
EXTRAEDEUNACADENA,UNTEXTODELIMITADO:EJEMPLO:
DimsourceAsString="asentencewith(aword)inparenthesis"
DimiAsInteger=0
CAD=GetDelimitedText(source,"(",")",i)
RETORNA:"aword"
NOTA:DEJAELPUNTERO"i"enlaposiciondespuesde")"
IFYANOHAYMASQUEEXTRAER,RETORNA"",YELINDICE=1
NOTA:indexOPTIONBASE=1
PublicSharedFunctionGetDelimited(ByValmiCadenaAsString,ByValOpenDelimiterAsString,_
ByValCloseDelimiterAsString,ByRefindexAsInteger)AsString
DimiAsInteger,jAsInteger
index=index1'AJUSTARABASE1
Ifindex<0Thenindex=0
buscarlamarcadeapertura
i=miCadena.IndexOf(OpenDelimiter,index)
Ifi<0Then
index=1
ExitFunction
EndIf
i=i+OpenDelimiter.Length
buscarlamarcadecierre
j=miCadena.IndexOf(CloseDelimiter,i)
Ifj<0Then
index=1
ExitFunction
EndIf
avanzarelpunteroalsiguientebyte
index=j+CloseDelimiter.Length
devolverlacadenaentrelosdelimitadores
Dev.EdwinRiveraPuente
Pgina8
ReturnmiCadena.Substring(i,ji)
EndFunction
ELIMINALOSCARACTERESDUPLICADOSDELACADENA.
PublicSharedFunctionFilterDup(ByValmiCadenaAsString)AsString
DimnPosAsInteger,cCarAsString,cCad2AsString=""
FornPos=0TomiCadena.Length1
cCar=miCadena.Substring(nPos,1)
cCad2+=IIf(miCadena.IndexOf(cCar)=1,cCar,"")
Next
ReturncCad2
EndFunction
ORDENAELCARACTERDEMAYORVALORASCII.
PublicSharedFunctionMayorCad(ByValMiCadenaAsString)AsString
DimcMayorAsString,iAsInteger,SubcadAsString
cMayor=MiCadena.Substring(0,1)
Fori=1ToMiCadena.Length1
Subcad=MiCadena.Substring(i,1)
IfAscW(Subcad)>AscW(cMayor)ThencMayor=Subcad
Next
ReturncMayor
EndFunction
ORDENAELCARACTERDEMENORVALORASCII.
PublicSharedFunctionMenorCad(ByValmiCadenaAsString)AsString
DimcMenorAsString,iAsInteger,SubcadAsString
cMenor=miCadena.Substring(0,1)
Fori=1TomiCadena.Length1
Subcad=miCadena.Substring(i,1)
IfAscW(Subcad)>AscW(cMenor)ThencMenor=Subcad
Next
ReturncMenor
EndFunction
ORDENALACADENAENFORMAASCENDENTE
PublicSharedFunctionOrdenaAsc(ByValmiCadenaAsString)AsString
DimnContadorAsInteger,nPosAsInteger
FornContador=0TomiCadena.Length2
FornPos=0ToLen(miCadena)nContador1
IfmiCadena.Substring(nPos,1)>miCadena.Substring(nPos+1,1)Then
miCadena=VB.Left(miCadena,nPos1)&miCadena.Substring(nPos+1,1)&_
miCadena.Substring(nPos,1)&VB.Right(miCadena,miCadena.LengthnPos1)
EndIf
Next
Next
ReturnmiCadena
EndFunction
ORDENALACADENAENFORMADESCENDENTE
PublicSharedFunctionOrdenaDesc(ByValmiCadenaAsString)AsString
DimnContadorAsInteger,nPosAsInteger
FornContador=0TomiCadena.Length2
FornPos=0TomiCadena.LengthnContador1
IfmiCadena.Substring(nPos,1)<miCadena.Substring(nPos+1,1)Then
miCadena=VB.Left(miCadena,nPos1)&miCadena.Substring(nPos+1,1)&_
miCadena.Substring(nPos,1)&VB.Right(miCadena,miCadena.LengthnPos1)
EndIf
Next
Next
ReturnmiCadena
EndFunction
Dev.EdwinRiveraPuente
Pgina9
CUENTAELNUMERODEPALABRASDELACADENA
Omitelossignosdepuntuacion
PublicSharedFunctionPalabras(ByValmiCadenaAsString)AsLong
DimnPosAsInteger,lSwitchAsBoolean=True,nCad3AsLong=0
DimcCad2AsString=",.:_'{}[]()*+^`?=/&%$#@|!\"+Chr(34)
FornPos=0TomiCadena.Length1
IfNotContiene(miCadena.Substring(nPos,1),cCad2)AndlSwitchThen
lSwitch=False
nCad3=nCad3+1
EndIf
IfContiene(miCadena.Substring(nPos,1),cCad2)Then
lSwitch=True
EndIf
Next
ReturnnCad3
EndFunction
'
'QUITATODOSLOSCARACTERESDECONTROLDELACADENA(ASCIIcode<32)
IfthesecondargumentisTrueoromitted,CRLFpairsarepreserved
'
PublicSharedFunctionStripControlChars(ByValmiCadenaAsString,OptionalByValKeepCRLFAsBoolean=True)AsString
weusethistobuildtheresult
DimsbAsNewSystem.Text.StringBuilder(miCadena.Length)
DimindexAsInteger
Forindex=0TomiCadena.Length1
IfNotChar.IsControl(miCadena,index)Then
notacontrolchar,sowecanaddtoresult
sb.Append(miCadena.Chars(index))
ElseIfKeepCRLFAndAlsomiCadena.Substring(index,2)=ControlChars.CrLfThen
itisaCRLF,andtheuseraskedtokeepit
sb.Append(miCadena.Chars(index))
EndIf
Next
Returnsb.ToString()
EndFunction
'
RETORNAUNASUBCADENA,QUESEENCUENTRADESPUESDELACADENAINDICADA
PstrVal:StringtoSearch
PintIndex:IndexValueintheSearchString
PstrDelimiter:[string]delimiter(1ormorechars)
Returns:[string]"Token"(sectionofdata)fromalistofdelimitedstringdata
Examples:GetToken("sslindia@hotmail.com",2,"@")returns"hotmail.com"
GetToken("123456789",2,"")returns"45"
GetToken("first,middle,last",3,",")returns"last"
PublicSharedFunctionGetTokenIdx(ByValMiCadenaAsString,ByValPintIndexAsInteger,ByValPstrDelimiterAsString)AsString
DimstrSubString()AsString
DimintIndex2AsInteger
DimiAsInteger
DimintDelimitLenAsInteger
DimPstrValAsString=MiCadena
intIndex2=1
i=0
intDelimitLen=Len(PstrDelimiter)
DoWhileintIndex2>0
ReDimPreservestrSubString(i+1)
intIndex2=InStr(1,PstrVal,PstrDelimiter)
IfintIndex2>0Then
strSubString(i)=Mid(PstrVal,1,(intIndex21))
PstrVal=Mid(PstrVal,(intIndex2+intDelimitLen),Len(PstrVal))
Else
strSubString(i)=PstrVal
EndIf
i=i+1
Loop
Dev.EdwinRiveraPuente
Pgina10
IfPintIndex>(i+1)OrPintIndex<1Then
Return""
Else
ReturnstrSubString(PintIndex1)
EndIf
EndFunction
QUITAESPACIOSDUPLICADOSDENTRODEUNACADENA
PublicSharedFunctionQuitaEspaciosDup(ByValMiCadenaAsString)AsString
ConstTWO_SPACESAsString=""
DimintPosAsInteger
DimstrtempAsString
DimPstrTextAsString=MiCadena.Trim
intPos=InStr(1,PstrText,TWO_SPACES,vbBinaryCompare)
DoWhileintPos>0
strtemp=Mid(PstrText,intPos+1).TrimStart
PstrText=VB.Left(PstrText,intPos)&strtemp
intPos=InStr(1,PstrText,TWO_SPACES,vbBinaryCompare)
Loop
ReturnPstrText
EndFunction
VERIFICASIELTEXTOESUNNUMERO
PublicSharedFunctionCheckNumeric(ByReftextAsString,ByRefDecValueAsBoolean)AsBoolean
DimiAsShort
DimdecSepAsString
retrievethedecimalseparatorsymbol
decSep=Format(0.1,".")
Fori=1ToLen(text)
SelectCaseMid(text,i,1)
Case"0"To"9"
Case"","+"
minus/plussignareonlyallowed
asleadingchars
Ifi>1ThenExitFunction
CasedecSep
exitifdecimalvaluesnotallowed
IfNotDecValueThenExitFunction
onlyonedecimalseparatorisallowed
IfInStr(text,decSep)<iThenExitFunction
CaseElse
rejectallothercharacters
ExitFunction
EndSelect
Next
ReturnTrue
EndFunction
'
'FILTRAUNACADENA,ALOSCARACTERESVALIDOSINDICADOS
'
PublicSharedFunctionFilterString(ByReftextAsString,ByRefValidCharsAsString)AsString
DimiAsInteger
DimresultAsString
Fori=1ToLen(text)
IfInStr(ValidChars,Mid(text,i,1))Then
result=result&Mid(text,i,1)
EndIf
Next
Returnresult
EndFunction
DEVUELVEUNACADENA,SOLOCONLOSCARACTERESALFANUMERICOSQUECONTIENE
PublicSharedFunctionSoloAlfaNumerico(ByValMiCadenaAsString)AsString
ReturnFilterString(MiCadena,"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")
Dev.EdwinRiveraPuente
Pgina11
EndFunction
'
'DEVUELVEUNACADENA,SOLOCONLOSCARACTERESNUMERICOSQUECONTIENE
'
PublicSharedFunctionSoloNumeros(ByValMicadenaAsString)AsString
ReturnFilterString(Micadena,"0123456789")
EndFunction
'
'RETORNAELNUMERODELINEASDEUNACADENA
'
PublicSharedFunctionCountLineas(ByValtcStringAsString)AsInteger
IftcString.Trim().Length=0Then
Return0
Else
ReturnContarCad(tcString,vbCr)+1
EndIf
EndFunction
'
'RETORNAELSTRINGQUESEENCUENTRAENUNAFILAXXDELACADENA
'
PublicSharedFunctionGetLineString(ByValtcStringAsString,ByValtnLineNoAsInteger)AsString
DimaLines()AsString=tcString.Split(ControlChars.Cr)
DimlcRetValAsString=""
Try
lcRetVal=aLines(tnLineNo1)
Catch
'IgnoretheexceptionasMLINEalwaysreturnsavalue
EndTry
ReturnlcRetVal
EndFunction
'
'CONCATENAUNARRAYDESTRINGS,ELPRIMERARGUMENTOESELSEPARADOR
'
PublicSharedFunctionConcatenaStrings(ByValsepAsString,ByValParamArrayargs()As Object)AsString
DimbuilderAsNewSystem.Text.StringBuilder
addeachitemoftheinputarraytotheStringBuilder'sstring
DimoAsObject
ForEachoInargs
Ifbuilder.Length>0Then
addtheseparatorifthisisnotthefirstitemweadd
builder.Append(sep)
EndIf
builder.Append(o)
Next
returnthefinalstring
Returnbuilder.ToString()
EndFunction
'
'CONCATENAUNARRAYDESTRINGS,ELPRIMERARGUMENTOESELSEPARADOR
'sitodoslosargumentossonstrings,estafuncionesmasrapida
'
PublicSharedFunctionConcatenaStrings2(ByValsepAsString,ByValParamArrayargs()AsString)AsString
ReturnString.Join(sep,args)
EndFunction
'
'VERIFICASILACADENATIENESOLOMINUSCULAS
'
PublicSharedFunctionIsStringLower(ByValsTextAsString)AsBoolean
DimcAsChar
ForEachcInsText
IfNotChar.IsLower(c)ThenReturnFalse
Next
ReturnTrue
EndFunction
'
'VERIFICASILACADENATIENESOLOMAYUSCULAS
'
Dev.EdwinRiveraPuente
Pgina12
PublicSharedFunctionIsStringUpper(ByValsTextAsString)AsBoolean
DimcAsChar
ForEachcInsText
IfNotChar.IsUpper(c)ThenReturnFalse
Next
ReturnTrue
EndFunction
'
'RETORNASIELCARACTERESUNCARACTERDECONTROL
'
PublicSharedFunctionIsControl(ByValstrAsString,ByValpositionAsInteger)AsBoolean
ReturnSystem.Char.IsControl(str,position)
EndFunction
'
'RETORNASIELCARACTERESUNCARACTERDECONTROL
'
PublicSharedFunctionIsDigit(ByValstrAsString,ByValpositionAsInteger)AsBoolean
ReturnSystem.Char.IsDigit(str,position)
EndFunction
'
'RETORNASIELCARACTERESUNCARACTERDECONTROL
'
PublicSharedFunctionIsLetter(ByValstrAsString,ByValpositionAsInteger)AsBoolean
ReturnSystem.Char.IsLetter(str,position)
EndFunction
'
Determinewhetherthecharacteriseitheraletteroradecimaldigit
'
PublicSharedFunctionIsLetterOrDigit(ByValstrAsString,ByValpositionAsInteger)AsBoolean
ReturnSystem.Char.IsLetterOrDigit(str,position)
EndFunction
'
Determinewhetherthecharacterisalowercaseletter
'
PublicSharedFunctionIsCharLower(ByValstrAsString,ByValpositionAsInteger)AsBoolean
ReturnSystem.Char.IsLower(str,position)
EndFunction
'
Determinewhetherthecharacterisadecimalorhexidecimaldigit
'
PublicSharedFunctionIsCharNumber(ByValstrAsString,ByValpositionAsInteger)AsBoolean
ReturnSystem.Char.IsNumber(str,position)
EndFunction
'
Determinewhetherthecharacterisapunctuationmark
'
PublicSharedFunctionIsCharPuntuacion(ByValstrAsString,ByValpositionAsInteger)AsBoolean
ReturnSystem.Char.IsPunctuation(str,position)
EndFunction
'
'Determinewhetherthecharacterisaseperatorcharacter
'
PublicSharedFunctionIsCharSeparator(ByValstrAsString,ByValpositionAsInteger)AsBoolean
ReturnSystem.Char.IsSeparator(str,position)
EndFunction
'
Determinewhetherthecharacterisasymbol
'
PublicSharedFunctionIsCharSymbol(ByValstrAsString,ByValpositionAsInteger)AsBoolean
ReturnSystem.Char.IsSymbol(str,position)
EndFunction
'
Determinewhetherthecharacterisanuppercaseletter
'
PublicSharedFunctionIsCharUpper(ByValstrAsString,ByValpositionAsInteger)AsBoolean
ReturnSystem.Char.IsUpper(str,position)
EndFunction
Dev.EdwinRiveraPuente
Pgina13
'
Determinewhetherthecharacteriswhitespace
'
PublicSharedFunctionIsCharWhite(ByValstrAsString,ByValpositionAsInteger)AsBoolean
ReturnSystem.Char.IsWhiteSpace(str,position)
EndFunction
'
Whenplacingtextina control'sCaptionproperty, anampersand displays asan underlinetodenotea hotkey. Forexample,setting
acaptionto"Crumb&Assoc."causestheAin"Assoc."toappearasahotkey.Thisfunctiondoubleseveryampersandcharacterinthe
inputstringtoremovethecharacter'sspecialmeaning.
Arguments:stringInThestringtoclean
Returns:Thecleanedstring
'
PublicSharedFunctionCleanAmpersand(ByValstringInAsString)AsString
ReturnstringIn.Replace("&","&&")
EndFunction
'
Covertsdoublequote(")charactersinastringtoapostrophes(').ThisfunctionisusefulwhenusingstringsasSQLstrings.
Arguments:stringInThestringtoclean
Returns:Thecleanedstring
'
PublicSharedFunctionCleanQuotes(ByValstringInAsString)AsString
ReturnstringIn.Replace(Chr(34),"'")
EndFunction
'
Determinesiftherearealphacharactersotherthan""inthesuppliedstring
Arguments:stringInThestringtocheck
Returns:Trueifthestringcontainsalphacharactersotherthan""or"",Falseotherwise
'
PublicSharedFunctionContainsAlpha(ByValstringInAsString)AsBoolean
DimcounterAsInteger
DimtempCharAsString
DimhasAlphaAsBoolean=False
Loopthroughthestring
Forcounter=0TostringIn.Length1
tempChar=stringIn.Substring(counter,1)
IftempChar>="0"AndtempChar<="9"Then
Thecharacterisnumeric,socontinue.
Else
IftempChar<>""AndtempChar<>""Then
hasAlpha=True
ExitFor
EndIf
EndIf
Nextcounter
ReturnhasAlpha
EndFunction
Returnsthenumberofwordsinadelimitedstring
Arguments:stringInThestringtocountwordsindelimitCharThecharacterthatdelimitswords
Returns:Thenumberofoccurrences
PublicSharedFunctionCountDelimitedWords(ByValstringInAsString,ByValdelimitCharAsString)AsInteger
DimwordCountAsInteger=1
DimpositionAsInteger
Findthefirstoccurence
position=stringIn.IndexOf(delimitChar)
DoWhileposition>0
Incrementthewordcounter
wordCount=wordCount+1
position=stringIn.IndexOf(delimitChar,position+1)
Loop
ReturnwordCount
EndFunction
'
Returnsthenumberoftimesastringappearsinastring
Arguments:stringInThestringtosearchinsearchForThestringtosearchfor
Dev.EdwinRiveraPuente
Pgina14
Returns:Thenumberofoccurrences
'
PublicSharedFunctionCountOccurrences(ByValstringInAsString,ByValsearchForAsString)AsInteger
DimpositionAsInteger
DimwordCountAsInteger
Findthefirstoccurrence
position=stringIn.IndexOf(searchFor)
Ifposition>0Then
wordCount=1
EndIf
DoWhileposition>0
Findremainingoccurrences
position=stringIn.IndexOf(searchFor,position+1)
Ifposition>0Then
Incrementthehitcounter
wordCount=wordCount+1
EndIf
Loop
ReturnwordCount
EndFunction
Returnsthenumberofwordsseperatedbyspaces
Arguments:stringInThestringtocountwordsin
Returns:Thenumberofwords
PublicSharedFunctionCountWords(ByValstringInAsString)AsInteger
DimwordCountAsInteger
DimcounterAsInteger
DimisSpaceAsBoolean=True
Walkthroughtheentirestring
Forcounter=0TostringIn.Length1
Determineifweareonaspace
IfstringIn.Substring(counter,1)=""Then
isSpace=True
Else
IfisSpaceThen
isSpace=False
Incrementthehitcounter
wordCount=wordCount+1
EndIf
EndIf
Nextcounter
ReturnwordCount
EndFunction
'
WrapsthestringinthespecifiedcharactersThisfunctionisusefulforenclosingtableorfieldnamescontainingspaceswithbrackets
Arguments:stringIn
Thestringtomodifiy
charsBegin
Thecharacterorcharacterstoaddtothebeginningofthestring
charsEnd
Thecharacterorcharacterstoaddtotheendofthestring
skipIfEnclosed Truetoskipthestringifitalreadystartswiththespecifiedvalue
Returns:Themodifiedstring
'
PublicSharedFunctionEncloseString(ByValstringInAsString,ByValcharsBeginAsString,ByValcharsEndAsString,_
ByValskipIfEnclosedAsBoolean)AsString
DimskipAsBoolean
DimretValueAsSystem.Text.StringBuilder=NewSystem.Text.StringBuilder(stringIn)
IfskipIfEnclosed=TrueThen
IfstringIn.StartsWith(charsBegin)Then
Skip,sincethestringalreadystartswiththe
specifiedenclosingcharacter(s)
skip=True
EndIf
EndIf
Ifskip=TrueThen
Donotmodifythestring
Else
retValue.Append(charsBegin,0,charsBegin.Length)
Dev.EdwinRiveraPuente
Pgina15
retValue.Append(charsEnd)
EndIf
ReturnretValue.ToString
EndFunction
'
Generates a random string suitable for a password. To avoid passwords that are easily guessed or easy to crack with a dictionary
based
passwordcracker,thisfunctiongeneratesmeaninglesspasswords.
Optionallyalternatevowelstomakethepasswordmore"pronounceable."
Arguments:pwdLengthNumberofcharactersinthepassword
alternateVowelsTruetoalternatebetweenconsonantsandvowelstomakethepassword"pronounceable"
Returns:Thepasswordstring
'
PublicSharedFunctionGenRandomPassword(ByValpwdLengthAsInteger,ByValalternateVowelsAsBoolean)AsString
DimpositionAsInteger
DimrandomCharAsInteger
DimlettersAsString="AEIOUBCDFGHJKLMNPQRSTVWXYZ"
DimretValueAsString
Initializetherandomnumbergeneratorwiththe
returnvaluefromthesystemtimer
DimrndNumAsSystem.Random=NewSystem.Random(CType(DateTime.Now.Second,Integer))
Forposition=0TopwdLength1
IfalternateVowelsThen
Everyothercharactershouldbeavowel
IfpositionMod2=0Then
Pickanumberbetween6and26
randomChar=rndNum.Next(6,26)
Else
Pickanumberbetween1and5
randomChar=rndNum.Next(1,5)
EndIf
Else
Eachcharacterisrandomacrossthewhole
alphabet.Pickanumberbetween1and26
randomChar=rndNum.Next(1,26)
EndIf
Gettherandomcharacterandappendittothe
passwordstring
retValue=retValue&letters.Substring(randomChar,1)
Nextposition
ReturnretValue
EndFunction
'
Returnsawordfromadelimitedstring
Arguments:stringInThestringtosearchindexThewordpositiontofind
delimitCharThecharacterusedasthedelimter
Returns:Thenthwordfromthestring
'
PublicSharedFunctionGetDelimitedWord(ByValstringInAsString,ByValindexAsInteger,ByValdelimitCharAsString)AsString
DimcounterAsInteger=1
DimstartPosAsInteger=0
DimendPosAsInteger
DimretValAsString
DimindexExceedsWordCountAsBoolean=False
Counttothespecifiedindex
Forcounter=2Toindex
Getthenewstartingposition
startPos=stringIn.IndexOf(delimitChar,startPos)+1
IfstartPos=0Then
Theindexexceedsthenumberofwordsinthestring
indexExceedsWordCount=True
EndIf
Nextcounter
IfNotindexExceedsWordCount=TrueAndNotindex=0Then
Determinetheendingposition
endPos=stringIn.IndexOf(delimitChar,startPos+1)
Ensurethattheendingpositionisnotlessthan1
Dev.EdwinRiveraPuente
Pgina16
IfendPos<=0Then
endPos=stringIn.Length
EndIf
Pullthewordoutandreturnit
retVal=stringIn.Substring(startPos,endPosstartPos)
EndIf
ReturnretVal
EndFunction
Convertsanintegerintoastringwithatrailingsuffix
Arguments:numberInThenumbertoconvert
Returns:Thestringwithasuffix(i.e.1becomes"1st",2becomes"2nd",etc.)
PublicSharedFunctionNumberSuffix(ByValnumberInAsInteger)AsString
DimsuffixAsString
Firstcheck>10and<20
IfnumberIn>10AndnumberIn<20Then
suffix="th"
Else
Grabthelastdigit
SelectCasenumberInMod10
Case1
suffix="st"
Case2
suffix="nd"
Case3
suffix="rd"
CaseElse
suffix="th"
EndSelect
EndIf
ReturnnumberIn&suffix
EndFunction
'
EncodetextinanHTMLsafemannerbydelimitingspecialcharacters.
Parameters:strInstringtoencode
Returns:Encodedstring
'
PublicSharedFunctionTextToHTML(ByValstrInAsString)AsString
DimTempStringAsString
TempString=strIn.Replace("&","&")
TempString=TempString.Replace(">",">")
TempString=TempString.Replace("<","<")
TempString=TempString.Replace(Chr(34),""")
ReturnTempString
EndFunction
convertastringtocamelcase
forexample:CamelCase("newfilename")=>"NewFileName"
PublicSharedFunctionCamelCase(ByValTextAsString)AsString
convertallnonalphanumericcharstospaces
ForiAsLong=Len(Text)To1Step1
IfInStr(1,"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",Mid$(Text,i,1),vbTextCompare)=0Then
Mid$(Text,i,1)=""
EndIf
Next
convertthestringtopropercase,andfilteroutallspaces
CamelCase=Replace(StrConv(Text,vbProperCase),"","")
EndFunction
changeasentenceinCamelCasetoasentencewithspacesforexampleConvertCamelCase("FileExchange")=>"FileExchange"
PublicSharedFunctionConvertCamelCase(ByValValueAsString)AsString
ForiAsLong=1ToLen(Trim$(Value))
Ifthecharacterisuppercase,theninsertaspacebefore
IfAsc(Mid$(Value,i,1))=Asc(UCase$(Mid$(Value,i,1)))Andi<>1Then
Dev.EdwinRiveraPuente
Pgina17
ConvertCamelCase=ConvertCamelCase&""&Mid$(Value,i,1)
Else
ConvertCamelCase=ConvertCamelCase&Mid$(Value,i,1)
EndIf
Nexti
EndFunction
'convertareversedfullnamebacktothe"FirstNameLastName"format
forexample,ConvertReverseFullName("Smith,JohnA.")==>"JohnA.Smith"
PublicSharedFunctionConvertReverseFullName(ByValReverseFullNameAsString)AsString
DimiAsLong
ReverseFullName=Trim$(ReverseFullName)
i=InStr(ReverseFullName,",")
Ifi=0Then
nocomma,justreturntheargument
ConvertReverseFullName=ReverseFullName
Else
exchangefirstandlastname
ConvertReverseFullName=Mid$(ReverseFullName,i+1)&""&VB.Left$(ReverseFullName,i1)
EndIf
EndFunction
search for a string starting at a given index and return the index of the character that follows the searched string (case insensitive
search)
PublicSharedFunctionInstrAfter(ByValSourceAsString,ByValSearchAsString,ByValindexAsLong)AsLong
InstrAfter=InStr(index,Source,Search,vbTextCompare)
IfInstrAfterThen
InstrAfter=InstrAfter+Len(Search)
EndIf
EndFunction
returnsthelastoccurrenceofasubstringThesyntaxissimilartoInStr
PublicSharedFunctionInstrLast(ByValStartAsLong,ByValSourceAsString,ByValsearchAsString,_
OptionalByValCompareMethodAsMicrosoft.VisualBasic.CompareMethod=vbBinaryCompare)AsLong
Do
searchthenextoccurrence
Start=InStr(Start,Source,search,CompareMethod)
IfStart=0ThenExitDo
wefoundone
InstrLast=Start
Start=Start+1
Loop
EndFunction
Generatesallcombinationpossibilitiesoutofastring
PublicSharedFunctionPermuteString(ByValZtringAsString,OptionalByValBaseAsString="")AsString
DimTmpStrArray()AsString,IAsLong
Ifthere'sonly1elementthen
IfInStr(1,Ztring,"",vbTextCompare)=0Then
PermuteString=Base&""&Ztring&vbCrLf
ExitFunction
EndIf
Ifmorethan1element:splitelementsinonearrayofelements
TmpStrArray=Split(Ztring,"",,vbTextCompare)
IfBase=""Then
Looptrougheachelementanddocallbackstopermuteagain
ForI=LBound(TmpStrArray)ToUBound(TmpStrArray)
PermuteString=PermuteString&PermuteString(ReturnAllBut_
(TmpStrArray,I),TmpStrArray(I))
Next
Else
Looptrougheachelementanddocallbackstopermuteagain
ForI=LBound(TmpStrArray)ToUBound(TmpStrArray)
Dev.EdwinRiveraPuente
Pgina18
PermuteString=PermuteString&""&PermuteString(ReturnAllBut_
(TmpStrArray,I),Base&""&TmpStrArray(I))
Next
EndIf
EndFunction
Returnallitemsinaarraybut1
PublicSharedFunctionReturnAllBut(ByRefArrai()AsString,ByValButAsLong)AsString
DimIAsLong
ForI=LBound(Arrai)ToUBound(Arrai)
IfI<>ButThen
ReturnAllBut=ReturnAllBut&Arrai(I)&""
EndIf
Next
ReturnAllBut=RTrim(ReturnAllBut)
EndFunction
generatearandomstringthemaskcancontainthefollowingspecialchars
?:anyASCIIcharacter(1127)
#:adigit
A:analphabeticchar
N:analphanumericchar
H:anhexcharallothercharsaretakenliterally
Example:arandomgeneratedphonenumber
phone=RandomString("(###)########")
PublicSharedFunctionRandomString(ByValmaskAsString)AsString
DimacodeAsInteger
DimoptionsAsString
Dimchar1AsString
initializeresultwithproperlenght
RandomString=mask
ForiAsInteger=1ToLen(mask)
getthecharacter
char1=Mid$(mask,i,1)
SelectCasechar1
Case"?"
char1=Chr(1+Rnd()*127)
options=""
Case"#"
options="0123456789"
Case"A"
options="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
Case"N"
options="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0"&"123456789"
Case"H"
options="0123456789ABCDEF"
CaseElse
don'tmodifythecharacter
options=""
EndSelect
selectarandomcharintheoptionstring
IfLen(options)Then
selectarandomchar
notethatweaddanextrachar,incaseRNDreturns1
char1=Mid$(options&VB.Right$(options,1),1+Int(Rnd()*Len(options)),1)
EndIf
insertthecharacterinresultstring
Mid(RandomString,i,1)=char1
Next
EndFunction
Replacethelastoccurrenceofastring
PublicSharedFunctionReplaceLast(ByValExpressionAsString,ByValFindAsString,ByValReplaceStrAsString,_
OptionalByValCompareAsMicrosoft.VisualBasic.CompareMethod=CompareMethod.Text)AsString
DimiAsLong
i=InStrRev(Expression,Find,,Compare)
Dev.EdwinRiveraPuente
Pgina19
IfiThen
thesearchstringisthere
notethattheReplacefunctiontrimsthefirstpart
ofthestring,sowemustrestoreitusingLeft$
ReturnVB.Left$(Expression,i1)&Replace(Expression,Find,ReplaceStr,i,1,Compare)
Else
thesearchstringisn'tthere
ReturnExpression
EndIf
EndFunction
Replaceplaceholdersintheform@@1,@@2,etc.
withargumentspassedafterthefirstone.
Forexample,callingthisfunctionwith
res=ReplaceArgs("File@@1notfoundondrive@@2","README.TXT","C:")
itreturnsthestring
"FileREADME.TXTnotfoundindriveA:"
PublicSharedFunctionReplaceArgs(ByValTextAsString,ByValParamArrayargs()AsObject)AsString
DimiAsInteger
Fori=0ToUBound(args)
Text=Replace(Text,"@@"&CStr(i+1),args(i))
Next
ReturnText
EndFunction
PerformmultiplesubstitutionsinastringThefirstargumentisthestringtobesearchedThesecondargumentisvbBinaryCompareor
vbTextCompareandtellswhetherthesearchiscasesensitiveornotThefollowingargumentsarepairsof(find,replace)strings
Forexample:
PrintReplaceMulti("ABCDEFabcdef",vbBinaryCompare,"AB","#","DE","%")
displays"#C%Fabcdef"
PrintReplaceMulti("ABCDEFabcdef",vbTextCompare,"AB","#","DE","%")
displays"#C%F#c%f"
Thefunctionraisesanerroriftheargumentsareunbalanced
PublicSharedFunctionReplaceMulti(ByValTextAsString,_
ByValCompareMethodAsMicrosoft.VisualBasic.CompareMethod,ByValParamArrayargs()AsObject)AsString
raiseIllegalFunctionCallerroriftheargs()
arraycontainsanoddnumberofitems
IfUBound(args)Mod2=0Then
Err.Raise(5)
EndIf
replaceeachargumentinthepair
ForiAsInteger=0ToUBound(args)Step2
Text=Replace(Text,args(i),args(i+1),,,CompareMethod)
Next
ReturnText
EndFunction
PublicSharedFunctionUniqueWords(ByValTextAsString)AsCollection
DimthisWordAsString
DimiAsLong
DimwordStartAsLong
DimvarWordAsObject
DimresAsString
preparetheresultcollection
UniqueWords=NewCollection
ignoreduplicatewords
OnErrorResumeNext
extractallwordsfromthetext
Fori=1ToLen(Text)
SelectCaseAsc(Mid$(Text,i,1))
Dev.EdwinRiveraPuente
Pgina20
Case65To90,97To122
analphachar
IfwordStart=0ThenwordStart=i
Case48To57
includedigitsonlyifsuffixofaword(asin"ABCD23")
CaseElse
IfwordStartThen
extracttheword
thisWord=LCase$(Mid$(Text,wordStart,iwordStart))
addtothecollection,butignoreifalreadythere
UniqueWords.Add(thisWord,thisWord)
resettheflag/pointer
wordStart=0
EndIf
EndSelect
Next
accountforthelastword
IfwordStartThen
extracttheword
thisWord=LCase$(Mid$(Text,wordStart,iwordStart))
addtothecollection,butignoreifalreadythere
UniqueWords.Add(thisWord,thisWord)
EndIf
EndFunction
Invertthecaseofallcharactersoftheinputstring
Examples:
Debug.WriteLine(FlipCase("HelloWorld"))=>hELLOwORLD
Debug.WriteLine(FlipCase("hELLOwORLD"))=>HelloWorld
Debug.WriteLine(FlipCase("3)thisismessagen.3"))=>3)THISIS MESSAGEN.3
PublicSharedFunctionFlipCase(ByValinputAsString)AsString
DimiAsInteger
DimresAsNewSystem.Text.StringBuilder(input.Length)
Fori=0Toinput.Length1
ifthecharislowercase,addtothestringbuilderthecharin
uppercase
IfChar.IsLower(input.Chars(i))Then
res.Append(Char.ToUpper(input.Chars(i)))
ElseIfChar.IsUpper(input.Chars(i))Then
ifthecharisuppercase,addtothestringbuilderthecharin
lowercase
res.Append(Char.ToLower(input.Chars(i)))
Else
ifthecharisadigitoranothernonletterchar,additasitis
res.Append(input.Chars(i))
EndIf
Next
Returnres.ToString()
EndFunction
EnumFormatColumnAlignment
Left
Center
Right
EndEnum
formatavalueinacolumnofgivenwidthandwithspecifiedalignment
usingthespecifiedpadcharacter
PublicSharedFunctionFormatValue(ByValvalueAsString,ByValwidthAsInteger,_
ByValalignmentAs FormatColumnAlignment,OptionalByValpadcharAsChar=""c)AsString
DimvalAsString=value.ToString
DimlenAsInteger=val.Length
SelectCasealignment
CaseFormatColumnAlignment.Left
Iflen<widthThen
Dev.EdwinRiveraPuente
Pgina21
val=val.PadRight(width,padchar)
ElseIflen>widthThen
val=val.Substring(0,width)
EndIf
CaseFormatColumnAlignment.Center
Iflen<widthThen
DimcharnumAsInteger=len+(widthlen)\2
val=val.PadLeft(charnum,padchar).PadRight(width,padchar)
ElseIflen>widthThen
val=val.Substring((lenwidth)\2,width)
EndIf
CaseFormatColumnAlignment.Right
Iflen<widthThen
val=val.PadLeft(width,padchar)
ElseIflen>widthThen
val=val.Substring(lenwidth)
EndIf
EndSelect
Returnval
EndFunction
Incrementthenumericrightmostportionofastring
Example:MessageBox.Show(IncrementString("test219"))=>220
PublicSharedFunctionIncrementString(ByValtextAsString)AsString
DimindexAsInteger
DimiAsInteger
Fori=text.Length1To0Step1
SelectCasetext.Substring(i,1)
Case"0"To"9"
CaseElse
index=i
ExitFor
EndSelect
Next
Ifindex=text.Length1Then
Returntext&"1"
Else
DimvalueAsInteger=Integer.Parse(text.Substring(index+1))+1
Returntext.Substring(0,index)&value.ToString()
EndIf
EndFunction
Searchthespecifiedstring,withthecasesensitivemodeornot
Returnstheindexofthefirstoccurrencefound,or1ifnotfound
PublicOverloadsSharedFunctionSearchString(ByValsourceAsString,ByValsearchAsString, _
OptionalByValignoreCaseAsBoolean=False)AsInteger
DimoptionsAsSystem.Text.RegularExpressions.RegexOptions
setthesearchoptionsaccordingtotheignoreCaseparameter
IfignoreCaseThen
options=System.Text.RegularExpressions.RegexOptions.IgnoreCase
Else
options=System.Text.RegularExpressions.RegexOptions.None
EndIf
counttheoccurrences
DimmAsSystem.Text.RegularExpressions.Match=_
System.Text.RegularExpressions.Regex.Match(source,search,options)
Ifm.SuccessThen
Returnm.Index
Else
Return1
EndIf
EndFunction
Searchthespecifiedstring,startingatthespecifiedindex,withthecasesensitivemodeornot
Returnstheindexofthefirstoccurrencefound,or1ifnotfound
Dev.EdwinRiveraPuente
Pgina22
PublicOverloadsSharedFunctionSearchString(ByValsourceAsString,ByValstartIndexAsInteger,_
ByValsearchAsString,OptionalByValignoreCaseAsBoolean=False)AsInteger
DimoptionsAsSystem.Text.RegularExpressions.RegexOptions
DimiAsInteger=SearchString(source.Substring(startIndex),search,ignoreCase)
Ifi=1Then
Return1
Else
Returni+startIndex
EndIf
EndFunction
Checkwhetherastringstartswithoneofmultiplepossiblechoices.
Return1ifnopossiblestringmatchesthestartofthesource,
otherwisereturntheindexofthematchingstring. Examples:
Debug.WriteLine(StartsWith("Thisismytestline",True,"this","that"))=>1
Debug.WriteLine(StartsWith("Thisismytestline",True,"That","This"))=>1
Debug.WriteLine(StartsWith("Thisismytestline",False,"this","that"))=>0
Debug.WriteLine(StartsWith("Thisismytestline",False,"That","Those"))=>1
PublicSharedFunctionStartsWith(ByValsourceAsString,ByValcaseSensitiveAsBoolean, _
ByValParamArrayparts()AsString)AsInteger
DimiAsInteger
Fori=0Toparts.Length1
DimpartAsString=parts(i)
IfcaseSensitiveThen
Ifsource.StartsWith(part)ThenReturni
Else
Ifsource.ToLower().StartsWith(part.ToLower())ThenReturni
EndIf
Next
ifwegethere,thesourcedoesnotstartwithoneofthepossible
choices,soreturn1
Return1
EndFunction
'Checkwhetherastringendswithoneofmultiplepossiblechoices.
Return1ifnopossiblestringmatchestheendofthesource,otherwisereturntheindexofthematchingstring.
Examples:
Debug.WriteLine(EndsWith("Thisismytestline",True,"Line","String"))=>1
Debug.WriteLine(EndsWith("Thisismytestline",True,"string","line"))=>1
Debug.WriteLine(EndsWith("Thisismytestline",False,"Line","String"))=>0
Debug.WriteLine(EndsWith("Thisismytestline",False,"string","sentence"))=>1
PublicSharedFunctionEndsWith(ByValsourceAsString,ByValcaseSensitiveAsBoolean,_
ByValParamArrayparts()AsString)AsInteger
DimiAsInteger
Fori=0Toparts.Length1
DimpartAsString=parts(i)
IfcaseSensitiveThen
Ifsource.EndsWith(part)ThenReturni
Else
Ifsource.ToLower().EndsWith(part.ToLower())ThenReturni
EndIf
Next
ifwegethere,thesourcedoesnotendwithoneofthepossiblechoices,
soreturn1
Return1
EndFunction
EndClass
Dev.EdwinRiveraPuente
Pgina23