Você está na página 1de 23

FUNCIONCLASEPARAMANEJODECADENAS.

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("&","&amp")
TempString=TempString.Replace(">","&gt")
TempString=TempString.Replace("<","&lt")
TempString=TempString.Replace(Chr(34),"&quot")
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

buildalistofalltheindividualwordsinastring returnsacollectionthatcontainsallthe uniquewords.Thekeyforeachitemisthe


word itself so you can easily use the result collection to both enumerate the words and test whether a given word appears in the
text.Wordsareinsertedintheordertheyappearandarestoredaslowercasestrings.Numbersareignored,butdigitcharactersare
preservediftheyappearinthemiddleorattheendofaword.

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

Você também pode gostar