Cadenas : Replace Access 97
|
Autor/es: Juan M Afán de Ribera |
Aquí tenemos una función Replace para los sufridos usuarios de Access 97.
Según la ayuda de VBA para Access, la función Replace:
Devuelve una cadena en la que se reemplazó una subcadena especificada con otra subcadena un número especificado de veces.
Sintaxis
Replace(Expression, Find, sReplace, [Start], [Count], [Compare])
La sintaxis de la función Replace consta de los siguientes |
Argumentos | Argumento | Descripción | | Expression | Requerido. Una expresión de cadena que contiene la subcadena que reemplazar | | Find | Requerido. La subcadena que se busca | | sReplace | Requerido. La subcadena de sustitución | | Start | Opcional. La posición dentro de la expresión donde se empezará a buscar la subcadena. Si se omite, se supone que es 1 | | Count | Opcional. El número de sustituciones de subcadenas que se realizarán. Si se omite, el valor predeterminado es –1, que significa que se hagan todas las sustituciones posibles | | Compare | Opcional. El valor númerico que indica la clase de comparación que se realizará cuando se evalúen las subcadenas. Vea la sección Valores para consultar los valores posibles |
|
Valores | Constante | Valor | Descripción | | vbUseCompareOption | -1 | Realizar una comparación utilizando el valor de la instrucción Option Compare | | vbBinaryCompare | 0 | Realiza una comparación binaria | | vbTextCompare | 1 | Realizar una comparación basada en el texto | | vbDatabaseCompare | 2 | Sólo para Microsoft Access. Realizar una comparación basada en la información de su base de datos |
|
Valores de retorno | Si | Replace devuelve | | Expression es de longitud cero | Una cadena de longitud cero ("") | | Expression es Null | Un error | | Find es de longitud cero | Una copia de Expression | | sReplace es de longitud cero | Una copia de Expression con todas las apariciones de encontrar quitadas | | Start > Len(Expression) | Una cadena de longitud cero | | Count es 0 | Una copia de Expression |
|
| El valor de retorno de la función Replace es una cadena con sustituciones hechas que comienza en la posición especificada por Start y concluye al final de la cadena Expression. No es una copia de la cadena original desde el inicio al final |
| Ejemplo de uso: el siguiente código reemplazaría todas las ocurrencias "VB" por "Visual Basic" en la variable "CadenaTmp" |
Dim CadenaTmp As String
CadenaTmp = "Documentación de VB." & vbCrLf & vbCrLf _
& "VB incluye varias herramientas de documentación, " _
& "cada una designada para ayudarle a aprender y usar " _
& "un aspecto particular del producto. La documentación " _
& "proporcionada con VB incluye lo siguiente... etc, etc ..."
CadenaTmp = Replace(CadenaTmp, "VB", "Visual Basic")
MsgBox CadenaTmp
|
'---------------------------------------------------------
' Replace
'
' Código escrito originalmente por Juan M Afán de Ribera.
' Estás autorizado a utilizarlo dentro de una aplicación
' siempre que esta nota de autor permanezca inalterada.
' En el caso de querer publicarlo en una página Web,
' por favor, contactar con el autor en
'
' accessvba@ya.com
'
' Este código se brinda por cortesía de
' Juan M. Afán de Ribera
'
Function Replace( _
Expression As String, _
Find As String, _
sReplace As String, _
Optional Start As Long = 1, _
Optional Count As Long = -1, _
Optional Compare As Long) As String
Dim pos As Long
Dim strTmp As String
Dim LenFind As Long
Dim LenReplace As Long
Dim cnt As Long
' si Expression es de longitud cero
' se devuelve una cadena de longitud cero ("")
If Len(Expression) = 0 Then Exit Function
' si Start es mayor que la longitud de Expression
' se devuelve una cadena de longitud cero ("")
If Start > Len(Expression) Then Exit Function
' si Find es de longitud cero
' se devuelve una copia de Expression
If Len(Find) = 0 Then
Replace = Expression
Exit Function
End If
' aseguramos que los valores para Compare y Start sean
' correctos, si no es así, asignamos los valores por defecto
If Start < 1 Or Start > Len(Expression) Then Start = 1
If Compare < 0 Or Compare > 2 Then Compare = 0
strTmp = Expression
LenFind = Len(Find)
LenReplace = Len(sReplace)
pos = InStr(Start, strTmp, Find, Compare)
Do While pos > 0 And cnt <> Count
strTmp = Left$(strTmp, pos - 1) & sReplace & Mid$(strTmp, pos + LenFind)
pos = InStr(pos + LenReplace, strTmp, Find, Compare)
cnt = cnt + 1
Loop
Replace = strTmp
End Function
'---------------------------------------------------------
|
Ejemplos: |
Temas relacionados: Split para Access 97 StrReverse Access 97 InStrRev Access 97 MonthName Access 97 WeekDayName Access 97 Join Access 97 Filter Access 97 |