Módulo:String (editar | discusión | historial | enlaces | seguimiento | registros)
Este módulo está destinado a proporcionar acceso a funciones de cadena básicas.
La mayoría de las funciones que se ofrecen aquí se pueden invocar con parámetros con nombre, parámetros sin nombre o una combinación de ambos. Si se utilizan parámetros con nombre, Mediawiki eliminará automáticamente cualquier espacio inicial o final del parámetro. Según el uso previsto, puede resultar ventajoso conservar o eliminar dichos espacios.
Las pruebas unitarias para este módulo están disponibles en Módulo:String/testcases .
Esta función devuelve la longitud de la cadena de destino.
Uso:
{{#invoke:String|len|target_string}}
O
{{#invoke:String|len|s= target_string }}
Parámetros:
Ejemplos:
{{#invoke:String|len| abcdefghi }}
→ 11{{#invoke:String|len|s= abcdefghi }}
→ 9Esta función devuelve una subcadena de la cadena de destino en índices inclusivos y de uno índice especificados.
Uso:
{{#invoke:String|sub|target_string|start_index|end_index}}
O
{{#invoke:String|sub|s= target_string |i= start_index |j= end_index }}
Parámetros:
Al primer carácter de la cadena se le asigna un índice de 1. Si i o j es un valor negativo, se interpreta como si se seleccionara un carácter contando desde el final de la cadena. Por lo tanto, un valor de -1 es lo mismo que seleccionar el último carácter de la cadena.
Si los índices solicitados están fuera del rango de la cadena indicada, se informa un error. Para evitar mensajes de error, utilice {{ #invoke:ustring |sub}} en su lugar.
Ejemplos:
"{{#invoke:String|sub| abcdefghi }}"
→ " abcdefghi ""{{#invoke:String|sub|s= abcdefghi }}"
→ "abcdefghi""{{#invoke:String|sub| abcdefghi | 3 }}"
→ "bcdefghi""{{#invoke:String|sub|s= abcdefghi |i= 3 }}"
→ "cdefghi""{{#invoke:String|sub| abcdefghi | 3 | 4 }}"
→ "antes de Cristo""{{#invoke:String|sub|s= abcdefghi |i= 3 |j= 4 }}"
→ "disco compacto"Esta función implementa las características de {{ str sub old }} y se conserva para mantener estas plantillas más antiguas. Devuelve una subcadena de la cadena de destino que comienza en un índice especificado y tiene una longitud especificada.
Uso:
{{#invoke:String|sublength|s= target_string |i= start_index |len= length }}
Parámetros:
Ejemplos:
{{#invoke:String|sublength|s= abcdefghi }}
→ abcdefghi{{#invoke:String|sublength|s= abcdefghi |i= 3 }}
→ defghi{{#invoke:String|sublength|s= abcdefghi |i= 3 |len= 4 }}
→ defgEsta función devuelve una subcadena de la cadena de origen que coincide con un patrón especificado.
Uso:
{{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}}
O
{{#invoke:String|match|s= source_string |pattern= pattern_string |start= start_index |match= match_number |plain= plain_flag |nomatch= nomatch_output }}
Parámetros:
plain=true
Si el match_number o start_index están fuera del rango de la cadena que se está consultando, esta función genera un error. También se genera un error si no se encuentra ninguna coincidencia. Si se agrega el parámetro ignore_errors=true, se suprimirá el error y se devolverá una cadena vacía en caso de falla.
Para obtener información sobre la construcción de patrones Lua , una forma de expresión regular , consulte:
Ejemplos:
{{#invoke:String|match| abc123def456 |%d+}}
→ 123{{#invoke:String|match|s= abc123def456 |pattern= %d+ }}
→ 123{{#invoke:String|match| abc123def456 |%d+|6}}
→ 23{{#invoke:String|match|s= abc123def456 |pattern= %d+ |start= 6 }}
→ 3{{#invoke:String|match|s= abc123def456 |pattern= %d+ |start= 6 |match= 2 }}
→ 456{{#invoke:String|match|s= abc123%d+ |pattern= %d+ }}
→ 123{{#invoke:String|match|s= abc123%d+ |pattern= %d+ |plain= true }}
→ %d+{{#invoke:String|match|s= abc |pattern= %d }}
→ Error en el módulo de cadena: no se encontró coincidencia{{#invoke:String|match|s= abc |pattern= %d |nomatch= No numeric characters in string }}
→ No hay caracteres numéricos en la cadena{{#invoke:String|match|s= abc |pattern= %d |ignore_errors= true }}
→{{#invoke:String|match|s= 0012001200 |pattern= 0*(%d*) }}
→ 12001200Esta función devuelve un solo carácter de la cadena de destino en la posición pos.
Uso:
{{#invoke:String|pos|target_string|index_value}}
O
{{#invoke:String|pos|target= target_string |pos= index_value }}
Parámetros:
El primer carácter tiene un valor de índice de 1.
Si se solicita un valor negativo, esta función seleccionará un carácter contando hacia atrás desde el final de la cadena. En otras palabras, pos = -1 es lo mismo que solicitar el último carácter.
Un valor solicitado de cero o un valor mayor que la longitud de la cadena devuelve un error.
Ejemplos:
{{#invoke:String|pos| abcdefghi | 4 }}
→ c{{#invoke:String|pos|target= abcdefghi |pos= 4 }}
→ elEsta función duplica el comportamiento de {{ str_find }} , incluidas todas sus peculiaridades. Esto se proporciona para admitir plantillas existentes, pero NO SE RECOMIENDA para códigos y plantillas nuevos. Se recomienda que los códigos nuevos utilicen la función "find" en su lugar.
Devuelve el primer índice de "origen" que coincide con "destino". La indexación se basa en 1 y la función devuelve -1 si la cadena "destino" no está presente en "origen".
Nota importante: si la cadena "objetivo" está vacía o falta, esta función devuelve un valor "1", lo que generalmente es un comportamiento inesperado y debe tenerse en cuenta por separado.
Uso:
{{#invoke:String|str_find|source_string|target_string}}
O
{{#invoke:String|str_find|source= source_string |target= target_string }}
Parámetros:
Ejemplos:
{{#invoke:String|str_find| abc123def }}
→ 1{{#invoke:String|str_find|source= abc123def }}
→ 1{{#invoke:String|str_find| abc123def |123}}
→ 5{{#invoke:String|str_find|source= abc123def |target= 123 }}
→ 4{{#invoke:String|str_find| abc123def |not}}
→ -1Esta función permite buscar una cadena o patrón objetivo dentro de otra cadena.
Uso:
{{#invoke:String|find|source_string|target_string|start_index|plain_flag}}
O
{{#invoke:String|find|source= source_string |target= target_string |start= start_index |plain= plain_flag }}
Parámetros:
Esta función devuelve el primer índice >= "inicio" donde "destino" se puede encontrar dentro de "origen". Los índices se basan en 1. Si no se encuentra "destino", esta función devuelve 0. Si "origen" o "destino" faltan o están vacíos, esta función también devuelve 0.
Esta función debería ser segura para cadenas UTF-8.
Ejemplos:
{{#invoke:String|find|abc123def|12}}
→ 4{{#invoke:String|find|source=abc123def|target=12}}
→ 4{{#invoke:String|find|source=abc123def|target=pqr}}
→ 0{{#invoke:String|find| abc123def |123}}
→ 5{{#invoke:String|find|source= abc123def |target= 123 }}
→ 4{{#invoke:String|find|source=abc123def|target=%d |start=3 |plain=false }}
→ 4Al utilizar parámetros sin nombre, se conservan y cuentan los espacios anteriores y finales:
{{#invoke:String|find| abc123def |c|false}}
→ 5{{#invoke:String|find|source= abc123def |target=c|plain=false}}
→ 3{{#invoke:string|find|abc 123 def|%s|plain=false}}
→ 4Prueba de presencia de una cadena:
{{#ifexpr:{{#invoke:string|find|haystack|needle}}|Found needle|Didn't find needle}}
→ No encontré la agujaEsta función permite reemplazar una cadena o patrón de destino dentro de otra cadena. Para los programadores de Lua: esta función funciona internamente llamando a mw.ustring.gsub
.
Uso:
{{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}}
O
{{#invoke:String|replace|source= source_string |pattern= pattern_string |replace= replace_string |count= replacement_count |plain= plain_flag }}
Parámetros:
Ejemplos:
"{{#invoke:String|replace| abc123def456 |123|XYZ}}"
→ "abcXYZdef456""{{#invoke:String|replace|source= abc123def456 |pattern= 123 |replace= XYZ }}"
→ "abcXYZdef456""{{#invoke:String|replace| abc123def456 |%d+|XYZ|1|false}}"
→ "abcXYZdef456""{{#invoke:String|replace|source= abc123def456 |pattern= %d+ |replace= XYZ |count=1 |plain= false }}"
→ "abcXYZdef456""{{#invoke:String|replace|source= abc123def456 |pattern= %d+ |replace= XYZ |plain= false }}"
→ "abcXYZdefXYZ"{{#invoke:String|replace|source= 0012001200 |pattern= ^0* |plain= false }}
→ 12001200Repite una cadena n veces. Una función sencilla para enviar string.rep a las plantillas.
Uso:
{{#invoke:String|rep|source|count}}
Parámetros:
Ejemplos:
"{{#invoke:String|rep|hello|3}}"
→ "holaholahola""{{#invoke:String|rep| hello | 3 }}"
→ "hola hola hola"En un patrón Lua, cambia un carácter de clase en un carácter literal . Por ejemplo: en un patrón, character .
captura "cualquier carácter"; escapePattern lo convertirá en %.
, capturando solo el carácter literal ".".
Uso:
{{#invoke:String|escapePattern|pattern_string}}
Parámetros:
Ejemplos:
"{{#invoke:String|escapePattern|A.D.}}"
→ "Un%.D%.""{{#invoke:String|escapePattern|10%}}"
→ "10%%"Cuenta la cantidad de veces que aparece un patrón determinado en los argumentos que se pasan a este módulo. Solo cuenta las coincidencias disjuntas.
Uso:
{{#invoke:String|count|source_str|pattern_string|plain_flag}}
O
{{#invoke:String|count|source= source_string |pattern= pattern_string|plain= plain_flag }}
Parámetros:
Ejemplos:
"{{#invoke:String|count|aabbcc|a}}"
→ "2""{{#invoke:String|count|ababababab|aba}}"
→ "2""{{#invoke:String|count|aabbcc|[ac]|plain=false}}"
→ "4""{{#invoke:String|count|aaabaaac|[^a]|plain=false}}"
→ "2""{{#invoke:String|count|aaabaaac|^a|plain=false}}"
→ "1"Une todas las cadenas pasadas como argumentos en una sola cadena, tratando el primer argumento como un separador.
Uso:
{{#invoke:String|join|separator|string1|string2|...}}
Parámetros:
Ejemplos:
"{{#invoke:String|join|x|foo|bar|baz}}"
→ "fooxbarxbaz""{{#invoke:String|join||a|b|c|d|e|f|g}}"
→ "abcdefg""{{#invoke:String|join|,|a|b|c|d|e|f|g}}"
→ "a,b,c,d,e,f,g""{{#invoke:String|join|, |a|b|c|d|e|f|g}}"
→ "a, b, c, d, e, f, g""{{#invoke:String|join| – |a|b|c|d|e|f|g}}"
→ "a – b – c – d – e – f – g"El ejemplo anterior utiliza la entidad html, pero el carácter Unicode también funciona.
Uso:
{{#invoke:String|endswith|source_str|search_string}}
O
{{#invoke:String|endswith|source= source_string |pattern= search_string}}
Devuelve "sí" si la cadena de origen termina con la cadena de búsqueda. Utilice parámetros con nombre para que las cadenas se recorten antes de su uso. A pesar del nombre del parámetro, search_string no es un patrón de Lua, se interpreta de forma literal.
"{{#invoke:String|endswith|xxxyyy|y}}"
→ "sí""{{#invoke:String|endswith|xxxyyy|z}}"
→ ""--[[ Este módulo está pensado para proporcionar acceso a funciones básicas de cadenas. La mayoría de las funciones proporcionadas aquí pueden ser invocadas con parámetros nombrados, parámetros sin nombre o una combinación de ellos. Si se utilizan parámetros nombrados, Mediawiki eliminará automáticamente cualquier espacio inicial o final del parámetro. Dependiendo del uso previsto, puede ser ventajoso conservar o eliminar dichos espacios. Opciones globales ignore_errors: Si se establece en 'true' o 1, cualquier condición de error dará como resultado que se devuelva una cadena vacía en lugar de un mensaje de error. error_category: Si ocurre un error, especifica el nombre de una categoría para incluir con el mensaje de error. La categoría predeterminada es [Categoría:Errores informados por el módulo String]. no_category: Si se establece en 'true' o 1, no se agregará ninguna categoría si se genera un error. Las pruebas unitarias para este módulo están disponibles en Módulo:String/tests. ]] local str = {} --[[ len Esta función devuelve la longitud de la cadena de destino. Uso: {{#invoke:String|len|target_string|}} O {{#invoke:String|len|s=target_string}} Parámetros s: La cadena cuya longitud se va a informar. Si se invoca utilizando parámetros nombrados, Mediawiki eliminará automáticamente cualquier espacio inicial o final de la cadena de destino. ]] function str . len ( frame ) local new_args = str . _getParameters ( frame . args , { 's' } ) local s = new_args [ 's' ] o '' return mw . ustring . len ( s ) end --[[ sub Esta función devuelve una subcadena de la cadena de destino en los índices especificados. Uso: {{#invoke:String|sub|target_string|start_index|end_index}} O {{#invoke:String|sub|s=target_string|i=start_index|j=end_index}} Parámetros s: La cadena de la que se devolverá un subconjunto i: El primer índice de la subcadena que se devolverá, el valor predeterminado es 1. j: El último índice de la cadena que se devolverá, el valor predeterminado es el último carácter. Al primer carácter de la cadena se le asigna un índice de 1. Si i o j es un valor negativo, se interpreta igual que seleccionar un carácter contando desde el final de la cadena. Por lo tanto, un valor de -1 es lo mismo que seleccionar el último carácter de la cadena. Si los índices solicitados están fuera del rango para la cadena dada, se informa un error. ]] function str . sub ( frame ) local new_args = str . _getParameters ( frame . args , { 's' , 'i' , 'j' } ) local s = new_args [ 's' ] o '' local i = tonumber ( new_args [ 'i' ] ) o 1 local j = tonumber ( new_args [ 'j' ] ) o - 1 local len = mw . ustring . len ( s ) -- Convierte negativos para verificación de rango si i < 0 entonces i = len + i + 1 fin si j < 0 entonces j = len + j + 1 fin si i > len o j > len o i < 1 o j < 1 entonces devuelve str . _error ( 'Índice del subconjunto de la cadena fuera de rango' ) fin si j < i entonces devuelve str . _error ( 'Índices del subconjunto de la cadena fuera de orden' ) fin devuelve mw . ustring . sub ( s , i , j ) fin --[[ Esta función implementa las características de {{str sub old}} y se mantiene para mantener estas plantillas más antiguas. ]] función str . sublength ( frame ) local i = tonumber ( frame . args . i ) o 0 local len = tonumber ( frame . args . len ) return mw . ustring . sub ( frame . args . s , i + 1 , len and ( i + len ) ) end --[[ _match Esta función devuelve una subcadena de la cadena de origen que coincide con un patrón especificado. Se exporta para su uso en otros módulos Uso: strmatch = require("Module:String")._match sresult = strmatch( s, pattern, start, match, plain, nomatch ) Parámetros s: La cadena a buscar patrón: El patrón o cadena a encontrar dentro de la cadena inicio: El índice dentro de la cadena de origen para iniciar la búsqueda. El primer carácter de la cadena tiene índice 1. El valor predeterminado es 1. match: En algunos casos, puede ser posible realizar múltiples coincidencias en una sola cadena. Esto especifica qué coincidencia devolver, donde la primera coincidencia es match= 1. Si se especifica un número negativo, se devuelve una coincidencia contando desde la última coincidencia. Por lo tanto, match = -1 es lo mismo que solicitar la última coincidencia. El valor predeterminado es 1. plain: una bandera que indica que el patrón debe entenderse como texto sin formato. El valor predeterminado es false. nomatch: si no se encuentra ninguna coincidencia, se muestra el valor "nomatch" en lugar de un error. Para obtener información sobre la construcción de patrones de Lua, una forma de [expresión regular], consulte: * http://www.lua.org/manual/5.1/manual.html#5.4.1 * http://www.mediawiki.org/wiki/Module:String/Extension:Scribunto/Lua_reference_manual#Patterns * http://www.mediawiki.org/wiki/Module:String/Extension:Scribunto/Lua_reference_manual#Ustring_patterns ]] -- Esta subrutina se exporta para su uso en otros módulos function str . _match ( s , patrón , inicio , índice_de_coincidencia , bandera_normal , nomatch ) si s == '' entonces devuelve str . _error ( ' La cadena de destino está vacía' ) fin si patrón == ' ' entonces devuelve str._error ( ' La cadena de patrón está vacía' ) fin inicio = tonumber ( inicio ) o 1 si math.abs ( inicio ) < 1 o math.abs ( inicio ) > mw.ustring.len ( s ) entonces devuelve str._error ( ' El inicio solicitado está fuera de rango' ) fin si match_index == 0 entonces devuelve str._error ( ' El índice de coincidencia está fuera de rango' ) fin si plain_flag entonces patrón = str._escapePattern ( patrón ) fin resultado local si match_index == 1 entonces -- Encontrar la primera coincidencia es simple caso resultado = mw.ustring.match ( s , patrón , inicio ) de lo contrario si inicio > 1 entonces s = mw.ustring.sub ( s , inicio ) fin iterador local = mw.ustring . gmatch ( s , patrón ) si match_index > 0 entonces -- Búsqueda hacia adelante para w en iterador do match_index = match_index - 1 si match_index == 0 entonces resultado = w break fin fin de lo contrario -- Búsqueda inversa local result_table = {} local count = 1 para w en iterador do result_table [ count ] = w count = count + 1 end result = result_table [ count + match_index ] end end if result == nil then if nomatch == nil then return str . _error ( 'No se encontró coincidencia' ) else return nomatch end else return result end end --[[ match Esta función devuelve una subcadena de la cadena de origen que coincide con un patrón especificado. Uso: {{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}} O {{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index |match=match_number|plain=plain_flag|nomatch=nomatch_output}} Parámetros s: La cadena a buscar patrón: El patrón o cadena a encontrar dentro de la cadena inicio: El índice dentro de la cadena de origen para iniciar la búsqueda. El primer carácter de la cadena tiene índice 1. El valor predeterminado es 1. match: En algunos casos, puede ser posible hacer múltiples coincidencias en una sola cadena. Esto especifica qué coincidencia devolver, donde la primera coincidencia es match= 1. Si se especifica un número negativo, se devuelve una coincidencia contando desde la última coincidencia. Por lo tanto, match = -1 es lo mismo que solicitar la última coincidencia. El valor predeterminado es 1. plain: Una bandera que indica que el patrón debe entenderse como texto sin formato. El valor predeterminado es false. nomatch: Si no se encuentra ninguna coincidencia, se muestra el valor "nomatch" en lugar de un error. Si se invoca utilizando parámetros nombrados, Mediawiki eliminará automáticamente cualquier espacio en blanco inicial o final de cada cadena. En algunas circunstancias, esto es deseable, en otros casos es posible que se desee conservar el espacio en blanco. Si match_number o start_index están fuera del rango de la cadena que se está consultando, esta función genera un error. También se genera un error si no se encuentra ninguna coincidencia. Si se agrega el parámetro ignore_errors=true, se suprimirá el error y se devolverá una cadena vacía en caso de falla. Para obtener información sobre la construcción de patrones de Lua, una forma de [expresión regular], consulte: * http://www.lua.org/manual/5.1/manual.html#5.4.1 * http://www.mediawiki.org/wiki/Module:String/Extension:Scribunto/Lua_reference_manual#Patterns * http://www.mediawiki.org/wiki/Module:String/Extension:Scribunto/Lua_reference_manual#Ustring_patterns ]] -- Este es el punto de entrada para la función #invoke:String|match str . match ( frame ) local new_args = str . _getParameters ( frame . args , { 's' , 'pattern' , 'start' , 'match' , 'plain' , 'nomatch' } ) local s = new_args [ 's' ] o '' local start = tonumber ( new_args [ 'start' ] ) o 1 local plain_flag = str . _getBoolean ( new_args [ 'plain' ] o false ) local pattern = new_args [ 'pattern' ] o '' local match_index = math.floor ( tonumber ( new_args [ 'match' ]) o 1 ) local nomatch = new_args [ 'nomatch' ] return str . _match ( s , pattern , start , match_index , plain_flag , nomatch ) end --[[ pos Esta función devuelve un solo carácter de la cadena de destino en la posición pos. Uso: {{#invoke:String|pos|target_string|index_value}} O {{#invoke:String|pos|target=target_string|pos=index_value}} Parámetros target: La cadena a buscar pos: El índice del carácter a devolver Si se invoca usando parámetros nombrados, Mediawiki eliminará automáticamente cualquier espacio inicial o final de la cadena de destino. En algunas circunstancias esto es deseable, en otros casos uno puede querer preservar el espacio en blanco. El primer carácter tiene un valor de índice de 1. Si uno solicita un valor negativo, esta función seleccionará un carácter contando hacia atrás desde el final de la cadena. En otras palabras, pos = -1 es lo mismo que preguntar por el último carácter. Un valor solicitado de cero, o un valor mayor que la longitud de la cadena devuelve un error. ]] function str . pos ( frame ) local new_args = str . _getParameters ( frame . args , { 'target' , 'pos' } ) local target_str = new_args [ 'target' ] or '' local pos = tonumber ( new_args [ 'pos' ] ) or 0 if pos == 0 or math.abs ( pos ) > mw . ustring . len ( target_str ) then return str . _error ( 'Índice de cadena fuera de rango' ) end return mw . ustring . sub ( target_str , pos , pos ) end --[[ str_find Esta función duplica el comportamiento de {{str_find}}, incluidas todas sus peculiaridades. Esto se proporciona para admitir plantillas existentes, pero NO SE RECOMIENDA para código y plantillas nuevos. Se recomienda que el código nuevo utilice la función "find" en su lugar. Devuelve el primer índice en "source" que coincide con "target". La indexación se basa en 1 y la función devuelve -1 si la cadena "target" no está presente en "source". Nota importante: si la cadena "target" está vacía o falta, esta función devuelve un valor de "1", que generalmente es un comportamiento inesperado y debe tenerse en cuenta por separado. ]] function str . str_find ( frame ) local new_args = str . _getParameters ( frame . args , { 'source' ,'objetivo' } ) local source_str = new_args [ 'source' ] o '' local target_str = new_args [ 'target' ] o '' si target_str == '' entonces devuelve 1 fin local start = mw . ustring . find ( source_str , target_str , 1 , true ) si start == nil entonces start = - 1 fin devuelve start fin --[[ find Esta función permite buscar una cadena de destino o un patrón dentro de otra cadena. Uso: {{#invoke:String|find|source_str|target_string|start_index|plain_flag}} O {{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}} Parámetros source: La cadena a buscar target: La cadena o patrón a buscar dentro de source start: El índice dentro de la cadena source para iniciar la búsqueda, por defecto 1 plain: Indicador booleano que indica que target debe entenderse como texto sin formato y no como una expresión regular de estilo Lua, por defecto true Si se invoca usando parámetros nombrados, Mediawiki eliminará automáticamente cualquier espacio en blanco inicial o final del parámetro. En algunas circunstancias esto es deseable, en otros casos uno puede querer preservar el espacio en blanco. Esta función devuelve el primer índice >= "start" donde "target" se puede encontrar dentro de "source". Los índices se basan en 1. Si no se encuentra "target", esta función retorna 0. Si "source" o "target" faltan o están vacíos, esta función también retorna 0. Esta función debería ser segura para cadenas UTF-8. ]] function str . find ( frame ) local new_args = str . _getParameters ( frame . args , { 'source' , 'target' , 'start' ,'normal' } ) local source_str = new_args [ 'fuente' ] o '' patrón local = new_args [ 'target' ] o '' local start_pos = tonumber ( new_args [ 'start' ]) o 1 local plain = new_args [ 'plain' ] o verdadero si source_str == '' o patrón == '' entonces devuelve 0 fin plain = str . _getBoolean ( plain ) local start = mw . ustring . find ( source_str , patrón , start_pos , plain ) si start == nil entonces start = 0 fin devuelve start fin --[[ replace Esta función permite reemplazar una cadena de destino o un patrón dentro de otra cadena. Uso: {{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}} O {{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string| count=replacement_count|plain=plain_flag}} Parámetros source: La cadena a buscar pattern: La cadena o patrón a buscar dentro de source replace: El texto de reemplazo count: El número de ocurrencias a reemplazar, el valor predeterminado es todos. plain: Indicador booleano que indica que el patrón debe entenderse como texto sin formato y no como una expresión regular de estilo Lua, el valor predeterminado es verdadero ]] function str . replace ( frame ) local new_args = str . _getParameters ( frame . args , { 'source' , 'pattern' , 'replace' , 'count' ,'simple' } ) local source_str = new_args [ 'fuente' ] o '' local pattern = new_args [ 'patrón' ] o '' local replace = new_args [ 'replace' ] o '' local count = tonumber ( new_args [ 'count' ] ) local plain = new_args [ 'plain' ] o verdadero si source_str == '' o patrón == '' entonces devuelve source_str fin plain = str . _getBoolean ( plain ) si plain entonces patrón = str . _escapePattern ( patrón ) replace = string. gsub ( replace , "%%" , "%%%%" ) --Solo es necesario escapar secuencias de reemplazo. fin local result si count ~= nil entonces result = mw . ustring . gsub ( source_str , patrón , replace , count ) de lo contrario result = mw . ustring . gsub ( source_str , patrón , replace ) fin devuelve result fin --[[ función simple para canalizar string.rep a las plantillas. ]] función str . rep ( frame ) repeticiones locales = tonumber ( frame . args [ 2 ] ) si no son repeticiones entonces devuelve str . _error ( 'la función rep espera un número como segundo parámetro, recibió "' .. ( frame . args [ 2 ] o '' ) .. '"' ) fin devuelve string.rep ( frame . args [ 1 ] o '' , repeticiones ) fin --[[ escapePattern Esta función escapa caracteres especiales de un patrón de cadena Lua. Vea [1] para detalles sobre cómo funcionan los patrones. [1] https://www.mediawiki.org/wiki/Module:String/Extension:Scribunto/Lua_reference_manual#Patterns Uso: {{#invoke:String|escapePattern|pattern_string}} Parámetros pattern_string: La cadena de patrón a escapar. ]] function str . escapePattern ( frame ) local pattern_str = frame . args [ 1 ] if not pattern_str then return str . _error ( 'No se especificó ninguna cadena de patrón' ) fin local result = str . _escapePattern ( pattern_str ) return result fin --[[ count Esta función cuenta el número de ocurrencias de una cadena en otra. ]] function str . count ( frame ) local args = str . _getParameters ( frame.args , { ' fuente ' , 'patrón' , 'simple' }) fuente local = args.fuente o ' ' patrón local = args.patrón o '' llanura local = str._getBoolean ( args.simple o verdadero ) si es simple entonces patrón = str._escapePattern ( patrón ) fin local _ , conteo = mw.ustring.gsub ( fuente , patrón , ' ' ) devolver conteo fin -- [ [ endswith Esta función determina si una cadena termina con otra cadena . ] ] función str.endswith ( frame ) local args = str . _getParameters ( frame . args , { 'source' , 'pattern' }) local source = args . source o '' local pattern = args . pattern o '' if pattern == '' then -- Todas las cadenas terminan con la cadena vacía. return "yes" end if mw . ustring . sub ( source , - mw . ustring . len ( pattern ), - 1 ) == pattern then return "yes" else return "" end end --[[ join Une todos los argumentos no vacíos; el primer argumento es el separador. Uso: {{#invoke:String|join|sep|one|two|three}} ]] function str . join ( frame ) local args = {} local sep for _ , v in ipairs ( frame . args ) do if sep then if v ~= '' then table.insert ( args , v ) end else sep = v end end return table.concat ( args , sep or '' ) end --[[ Función auxiliar que rellena la lista de argumentos dado que el usuario puede necesitar usar una mezcla de parámetros nombrados y sin nombre. Esto es relevante porque los parámetros nombrados no son idénticos a los parámetros sin nombre debido al recorte de cadenas, y cuando se trabaja con cadenas a veces queremos preservar o eliminar ese espacio en blanco dependiendo de la aplicación. ]] function str . _getParameters ( frame_args , arg_list ) local new_args = { } índice local = 1 valor local para _ , arg en ipairs ( arg_list ) hacer valor = frame_args [ arg ] si valor == nulo entonces valor = frame_args [ índice ] índice = índice + 1 fin nuevos_args [ arg ] = valor fin devolver nuevos_args fin -- [[ Función auxiliar para manejar mensajes de error. ] ] función str._error ( error_str ) marco local = mw.getCurrentFrame ( ) categoría_error local = frame.args.categoría_error o ' Errores informados por el módulo String ' ignore_errors local = frame.args.ignor_errors o falso no_category local = frame.args.no_category o falso si str . _getBoolean ( ignore_errors ) entonces devuelve '' fin local error_str = '<strong class="error">Error del módulo de cadena: ' .. error_str .. '</strong>' si error_category ~= '' y no str . _getBoolean ( no_category ) entonces error_str = '[[Categoría:' .. error_category .. ']]' .. error_str fin devuelve error_str fin --[[ Función auxiliar para interpretar cadenas booleanas ]] función str . _getBoolean ( boolean_str ) valor_booleano local si tipo ( boolean_str ) == 'cadena' entonces boolean_str = boolean_str : lower () si boolean_str == 'false' o boolean_str == 'no' o boolean_str == '0' o boolean_str == '' entonces boolean_value = false de lo contrario boolean_value = true end de lo contrario si tipo ( boolean_str ) == 'booleano' entonces boolean_value = boolean_str de lo contrario error ( 'No se encontró ningún valor booleano' ) end return boolean_value end --[[ Función auxiliar que escapa todos los caracteres de patrón para que se traten como texto sin formato. ]] function str . _escapePattern ( pattern_str ) return ( string.gsub ( pattern_str , "[%(%)%.%%%+%-%*%?%[%^%$%]]" , "%%%0" ) ) end return str