祉是什么意思| 清朝前面是什么朝代| 来月经喝什么茶好| 顶到子宫是什么感觉| 假酒喝了有什么症状| 尿潜血阳性什么意思| 学架子鼓有什么好处| 糖尿病人不能吃什么| 庄周梦蝶什么意思| 个子矮吃什么才能长高| 师参谋长是什么军衔| 医共体是什么意思| 儿保是什么| 双肺局限性气肿是什么病| 女生腋毛多是什么原因| 红细胞平均体积偏低是什么意思| 巧囊是什么原因形成的| 下连是什么意思| edsheeran为什么叫黄老板| 雨花石是什么石头| 瘸子是什么意思| 涤棉是什么材质| 后背沉重感是什么原因引起的| 宫缩是什么原因引起的| b2驾照能开什么车| 怀孕什么时候有反应| 哺乳期吃辣椒对宝宝有什么影响| 阴道炎什么症状| 紫菜不能和什么一起吃| 不全骨折是什么意思| 女生吃木瓜有什么好处| 蜱虫长什么样| 7月18日什么星座| 风热感冒咳嗽吃什么药| 灌注是什么意思| 梦见被警察抓预示什么| 二月十七是什么星座| 私处痒是什么原因| 梦见儿子拉屎是什么意思| 时柱代表什么| 低血压吃什么好的最快女性| 打冷是什么意思| 营卫不和吃什么中成药| 家庭养什么狗最干净| 黎字五行属什么| 龙凤胎是什么意思| 鼻炎流鼻血是什么原因| 84年属鼠是什么命| 什么是甲沟炎| 医生助理是做什么的| 维u是什么药| 俊字五行属什么| 心跳快吃什么药| 治疗肝脏硬化要吃什么药好| 来月经喝什么茶好| 斑鸠吃什么| 囊肿是什么原因造成的| 心脏问题挂什么科| 咳嗽嗓子疼吃什么药| 办健康证需要带什么证件| 胆红素偏高有什么危害| 黑加京念什么| 多喝水有什么好处和坏处| 什么是上火| 珊瑚绒是什么面料| hpv59阳性是什么意思| 6月9日什么星座| 今天是什么节气24节气| 公安和警察有什么区别| 九月二十六是什么星座| 马蜂窝治什么病最好| 寿者相什么意思| 千里共婵娟什么意思| 两肺间质性改变是什么意思| 男人胡子长得快是什么原因| 回族不吃什么| 炎症是什么| 高钙血症是什么意思| 喝罗汉果水有什么功效| 支气管疾患是什么意思| 长命百岁的动物是什么| 清华大学校长什么级别| 什么是家| 无精是什么原因造成的| 孩子容易出汗是什么原因| cbd是什么意思啊| 女人小便带血是什么原因引起的| 黄豆芽炒什么好吃| 蜂王浆是什么味道| 血沉高是什么原因| 心脏积液吃什么药最好| 梦到数钱代表什么预兆| 试管移植后吃什么容易着床| 什么样的耳朵| 唾液酸苷酶阳性什么意思| 什么贵人能治孤辰寡宿| 男人胸前有痣代表什么意思| 腰间盘突出用什么药好| 助理研究员是什么职称| 锅包肉用什么淀粉| 囊肿与肿瘤有什么区别| 夏天为什么这么热| 脚气用什么药好| 软饮料是指什么| 平血头晕吃什么药最好| 急性尿道炎吃什么药| 山楂和什么泡水喝降血压| 消心痛又叫什么| 舌苔白吃什么药效果好| 今天什么冲什么| 茉莉花是什么颜色| 树脂是什么材料| 什么水果养胃又治胃病| 为什么会有肾结石| 拼音b像什么| 腿部抽筋是什么原因引起的| 得瑟什么意思| 寄生虫是什么意思| 小肝功能是检查什么| 什么是穿刺手术| 南昌有什么好玩的景点| 水瓶是什么象星座| 不明原因腿疼挂什么科| 病是什么偏旁| 为什么一吃饭就肚子疼| 皮质醇是什么| 望子成龙是什么意思| 打屁很臭是什么原因| 今年天热的原因是什么| 什么是天赋| aki医学上是什么意思| 喝酒头疼是什么原因| 脚底红润是什么原因| 口腔医学技术是什么| 为什么会下雨| 嗝屁是什么意思| 肌腱炎有什么症状| 青定读什么| 半夜胎动频繁是什么原因| 肾亏吃什么好| 世界第一长河是什么河| 艾灸肚脐眼有什么好处| 扁桃体发炎严重吃什么药好得快| 什么水果可以减肥| mm代表什么单位| 6.1什么星座| 国民老公是什么意思| 甲亢吃什么食物最好| 戒断反应是什么| 文房四宝指的是什么| 处理器是什么意思| 男生纹身纹什么好| 什么样的人容易猝死| 低密度脂蛋白高是什么意思| 请结合临床是什么意思| 什么是新陈代谢| 什么病不能吃松花粉| 月经过后腰酸疼是什么原因| 舌尖发麻是什么病的前兆| 什么人容易得骨髓瘤| 从胃到小腹连着疼是什么原因| 劲爆是什么意思| 什么叫切片| 海肠是什么| 狗鱼是什么鱼| 荷叶茶有什么作用| 肌酐高吃什么药好| pd是什么意思| 肾阴虚吃什么食物补| 上厕所出血是什么原因| h1v是什么病| 引什么大叫| 再生障碍性贫血是什么病| 吃无花果有什么好处| 什么是事故隐患| 无机磷测定是检查什么| 甲状腺结节吃什么散结| 什么是甲亢| 肝胆不好有什么症状有哪些表现| 经常做春梦是什么原因| 尿频是什么病| 半梦半醒是什么意思| 飞机打多了会有什么严重的后果吗| 4月9号是什么星座| 肾阴虚吃什么中成药| 吃什么能快速减肥| 急性尿路感染吃什么药| 喉咙痛吃什么水果好得最快| 角弓反张是什么意思| 榴莲有什么营养价值| 遗精是什么感觉| 柠檬水喝了有什么好处| 蘑菇是什么| 靥什么意思| 下午四点多是什么时辰| 戌是什么意思| 绝对零度是什么意思| 喜欢的反义词是什么| 中元节又叫什么节| 肚脐左边是什么器官| 激光脱毛对身体有什么危害| 2月24日什么星座| 两个c交叉是什么牌子| 扫把星什么意思| 肠胃消化不好吃什么食物| 胰岛素抵抗有什么症状| 孙策字什么| supreme是什么牌子| 女人吃什么排湿气最快| 粘米是什么米| gcp是什么| 胃癌吃什么药| 为什么今年夏天特别热| 4.20号是什么星座| 非球面镜片是什么意思| 1月出生是什么星座| 为什么会得神经性皮炎| 三七粉做面膜有什么功效| 身体痒是什么原因| 支原体是什么意思| 泡脚什么时候最佳时间| 不是什么而是什么造句| 深水炸弹是什么意思| afp是什么| 吃无花果干有什么好处| 锁骨上的痣代表什么| mrmrs是什么牌子| 8月14是什么星座| 肌酸激酶偏高说明什么| 理想主义者是什么意思| 吃山竹有什么好处和坏处| 土是什么颜色| 无什么| 明知故犯的故是什么意思| 不明觉厉什么意思| 强阳下降到什么程度开始排卵| 什么名字| 红枣什么时候吃最好| 疱疹感染是什么病| 什么是银屑病| 舌尖红是什么原因| 喉咙痛吃什么饭菜好| 雄鱼是什么鱼| 梦见牛是什么意思| 右耳烫代表什么预兆| 7月31日是什么星座| 阴阳调和是什么意思| 嘴辰发紫是什么病| 抖腿有什么好处| 猕猴桃什么时候吃最好| 龙虎山是什么地貌| 五爷是什么菩萨| 多汗症挂什么科| 什么样的泥土| 满月针最晚什么时候打| 南北杏和什么煲汤止咳化痰| 解酒吃什么| 附属是什么意思| 中性粒细胞绝对值高是什么原因| 经常肚子疼拉肚子是什么原因| 电子邮件地址是什么意思| 匈奴人是现在的什么人| 男人阴虱用什么药| 虫草对身体有什么好处| 百度Eho kuatia retepype

win10创意者更新是什么 Win10创意者更新升级方法

Vikipet?megua
百度 ”“抓落实不能只挑软柿子捏,要敢于啃硬骨头。

La documentación para este módulo puede ser creada en Módulo:String/doc

--[[  
Este módulo está destinado a proporcionar acceso a las funciones de cadena (string) básicas.
]]

local str = {}

--[[
len

Parametros
    s: La cadena a encontrar su longitud 

]]
function str.len( frame )
    local new_args = str._getParameters( frame.args, {'s'} );
    local s = new_args['s'] or '';
    return mw.ustring.len( s )
end

--[[
sub

Parametros
    s: La cadena donde extraer la subcadena 
    i: La cadena donde extraer la subcadena.
    j: índice final de la subcadena, por defecto la longitud total, hasta el último carácter.
    
]]
function str.sub( frame )
    local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } );
    local s = new_args['s'] or '';
    local i = tonumber( new_args['i'] ) or 1;
    local j = tonumber( new_args['j'] ) or -1;
    
    local len = mw.ustring.len( s );

    -- Convertir negativos para la comprobación de rango
    if i < 0 then
        i = len + i + 1;
    end
    if j < 0 then
        j = len + j + 1;
    end
    
    if i > len or j > len or i < 1 or j < 1 then
        return str._error( 'índice fuera del rango de la cadena' );
    end
    if j < i then
        return str._error( 'índices de la cadena no ordenados' );
    end
    
    return mw.ustring.sub( s, i, j )
end

--[[
match

Parametros
   s: cadena donde se hace la búsqueda 
   pattern: patrón o cadena a buscar. 
   start: índice de la cadena dónde empezar a buscar, por defecto 1, el primer carácter. 
   match: si se encuentran múltiples coincidencias, especifica cuál de ellas devolver. Por defecto es 1, l
       la primera coincidencia encontrada. Un número negativo cuenta desde el final, por lo tanto 
       match = -1 es la última coincidencia. 
   plain: indica si el patrón debe interpretarse como texto limpio, por defecto 'false'. nomatch: en caso de 
       no encontrar ninguna coincidencia, devuelve el valor de "nomatch" en lugar de un error. 
       Si el número match o el índice start están fuera del rango de la cadena, entonces la función genera un error. 
       También genera un error si no encuentra ninguna coincidencia. 
       Con el parámetro global ignore_errors = true se suprime el    
       error y devuelve una cadena vacía.
]]
function str.match( frame )
    local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} );
    local s = new_args['s'] or '';
    local start = tonumber( new_args['start'] ) or 1;
    local plain_flag = str._getBoolean( new_args['plain'] or false );
    local pattern = new_args['pattern'] or '';
    local match_index = math.floor( tonumber(new_args['match']) or 1 );
    local nomatch = new_args['nomatch'];
    
    if s == '' then
        return str._error( 'La cadena donde buscar está vacía' );
    end
    if pattern == '' then
        return str._error( 'La cadena de búsqueda está vacía ' );
    end
    if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then
        return str._error( 'índice d\'inicio fuera del rango de la cadena ' );
    end
    if match_index == 0 then
        return str._error( 'Número de coincidencias fuera de rango' );
    end
    if plain_flag then
        pattern = str._escapePattern( pattern );
    end
    
    local result
    if match_index == 1 then
        -- Encontrar la primera coincidencia es un caso sencillo.
        result = mw.ustring.match( s, pattern, start )
    else
        if start > 1 then
            s = mw.ustring.sub( s, start );
        end
        
        local iterator = mw.ustring.gmatch(s, pattern);
        if match_index > 0 then
            -- Búsqueda hacia adelante
            for w in iterator do
                match_index = match_index - 1;
                if match_index == 0 then
                    result = w;
                    break;
                end
            end    
        else
            -- Invierte búsqueda
            local result_table = {};
            local count = 1;
            for w in iterator 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( 'Ninguna coincidencia encontrada' );
        else
            return nomatch;
        end
    else
        return result;
    end
end

--[[
pos

Parámetros
   target: Cadena donde buscar. 
   pos: índice del carácter a devolver. 
]]
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 fuera del rango de la cadena' );
    end    
    
    return mw.ustring.sub( target_str, pos, pos );
end

--[[
find

Parametros
    source: Cadena donde buscar. 
    target: Cadena a buscar o patrón de búsqueda. 
    start: índice de la cadena fuente donde empezar a buscar, por defecto 1, el primer carácter. 
    plain: Indica si la búsqueda debe interpretarse como texto limpio, de lo contrario como patrón Lua. 
        Por defecto es 'true'.
]]
function str.find( frame )
    local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } ); 
    local source_str = new_args['source'] or '';
    local pattern = new_args['target'] or '';
    local start_pos = tonumber(new_args['start']) or 1;
    local plain = new_args['plain'] or true;
        
    if source_str == '' or pattern == '' then
        return 0;
    end    
    
    plain = str._getBoolean( plain );

    local start = mw.ustring.find( source_str, pattern, start_pos, plain )
    if start == nil then
        start = 0
    end
    
    return start
end

--[[
replace

Parámetros
    source: Cadena donde buscar 
    pattern: Cadena de búsqueda o patrón a buscar 
    replace: Texto de reemplazo 
    count: Número de ocurrencias a reemplazar, por defecto todas. 
    plain: Indica si la búsqueda debe interpretarse como texto limpio, de lo contrario como patrón Lua. Por 
        defecto es 'true' 
]]
function str.replace( frame )
    local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } ); 
    local source_str = new_args['source'] or '';
    local pattern = new_args['pattern'] or '';
    local replace = new_args['replace'] or '';
    local count = tonumber( new_args['count'] );
    local plain = new_args['plain'] or true;
        
    if source_str == '' or pattern == '' then
        return source_str;
    end    
    plain = str._getBoolean( plain );

    if plain then
        pattern = str._escapePattern( pattern );
        replace = mw.ustring.gsub( replace, "%%", "%%%%" ); --Sólo es necesario secuencias de escape.
    end
    
    local result;

    if count ~= nil then
        result = mw.ustring.gsub( source_str, pattern, replace, count );
    else
        result = mw.ustring.gsub( source_str, pattern, replace );
    end        

    return result;
end

function str.mayuscula(frame) -- Convierte en mayúsculas la primera letra que aparece en la edición de una cadena
    local s = frame.args[1] or '';
    if s  ~= '' then        
        local cambio = {};
        local modo = {};
        if string.find(s, '|') ~= nil then -- Enlaces con etiqueta
            modo = string.upper(string.match(s,'(|%a)'));
            cambio = string.gsub(s,'|%a', modo,1);
        elseif string.find(s, '[[]') ~= nil then -- Enlaces sin etiqueta
            modo = string.upper(string.match(s,'^(..%a)'));
            cambio = string.gsub(s,'^..%a', modo,1);
        elseif string.match(s,'^%a') ~= nil then -- Sin enlace
           modo = string.upper(string.match(s,'^(%a)'));
           cambio = string.gsub(s,'^%a', modo, 1);
        else
           cambio = s;
        end
        return cambio;
    end
end

--[[
Función de ayuda que rellena la lista de argumentos, para que el usuario pueda utilizar una combinación de
 parámetros con nombre y sin nombre. Esto es importante porque los parámetros con nombre no funcionan igual 
 que los parámetros sin nombre cuando se encadenan recortes, y cuando se trata de cadenas
 a veces se debe conservar o quitar espacios en blanco dependiendo de la aplicación. 
]]
function str._getParameters( frame_args, arg_list )
    local new_args = {};
    local index = 1;
    local value;
    
    for i,arg in ipairs( arg_list ) do
        value = frame_args[arg]
        if value == nil then
            value = frame_args[index];
            index = index + 1;
        end
        new_args[arg] = value;
    end
    
    return new_args;
end        

--[[
Función de ayuda para controlar los mensajes de error.
]]
function str._error( error_str )
    local frame = mw.getCurrentFrame();
    local error_category = frame.args.error_category or 'Errores detectados por el módulo String';
    local ignore_errors = frame.args.ignore_errors or false;
    local no_category = frame.args.no_category or false;
    
    if str._getBoolean(ignore_errors) then
        return '';
    end
    
    local error_str = '<strong class="error">Error del módulo String: ' .. error_str .. '</strong>';
    if error_category ~= '' and not str._getBoolean( no_category ) then
        error_str = '[[Categoría:Wikipedia:' .. error_category .. ']]' .. error_str;
    end        
    
    return error_str;
end

--[[
Función de ayuda para interpretar cadenas booleanas.
]]
function str._getBoolean( boolean_str )
    local boolean_value;
    
    if type( boolean_str ) == 'string' then
        boolean_str = boolean_str:lower();
        if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0' 
                or boolean_str == '' then
            boolean_value = false;
        else
            boolean_value = true;
        end    
    elseif type( boolean_str ) == 'boolean' then
        boolean_value = boolean_str;
    else
        error( 'Ningún valor booleano encontrado' );
    end    
    return boolean_value
end

--[[
Función de ayuda que escapa a todos los caracteres de patrón para que puedan ser tratados
como texto sin formato.
]]
function str._escapePattern( pattern_str )
    return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" );
end

return str
白羊座男和什么星座最配 为什么高铁没有e座 红萝卜和胡萝卜有什么区别 腿毛长的男人代表什么 淋巴结节吃什么药
出品人是干什么的 ko是什么意思啊 手串13颗代表什么意思 胃食管反流挂什么科 面色晄白是什么意思
末梢神经炎是什么症状 淡盐水漱口有什么好处 女性腰酸是什么原因引起的 黄色分泌物是什么原因 遗精吃什么药
宰相的宰最早指什么 什么炖鸡汤好喝又营养 门庭是什么意思 什么是舌吻 金牛座和什么星座最配
阴道炎用什么药96micro.com AMY医学上是什么意思hcv9jop4ns1r.cn 轻度脑梗吃什么药最好hcv8jop4ns7r.cn 龙根是什么hcv8jop5ns4r.cn cm是什么岗位hcv7jop6ns1r.cn
孕吐什么时候开始hcv9jop4ns5r.cn 幽门螺旋杆菌阳性吃什么药shenchushe.com 检查幽门螺旋杆菌挂什么科hcv7jop6ns5r.cn 五个月宝宝可以吃什么水果hcv8jop1ns2r.cn 翻白眼是什么意思hcv8jop0ns2r.cn
口腔溃疡不能吃什么hcv7jop9ns5r.cn 先天性巨结肠有什么症状hcv9jop2ns4r.cn 蜂蜜与什么食物相克hcv9jop5ns9r.cn 两胸中间疼是什么原因0735v.com 报复是什么意思sscsqa.com
里番是什么hcv8jop8ns2r.cn 定坤丹什么时候吃最好kuyehao.com 吴京为什么看上谢楠hcv7jop9ns4r.cn 马加大是什么字hcv9jop4ns1r.cn 内科主要看什么病hcv8jop1ns4r.cn
百度