로그인하고 있지 않습니다. 편집하면 당신의 IP 주소가 공개적으로 기록됩니다. 계정을 만들고 로그인하면 편집 시 사용자 이름만 보이며, 위키 이용에 여러 가지 편의가 주어집니다.중간의 다른 편집과 충돌하여 이 편집을 되돌릴 수 없습니다. 스팸 방지 검사입니다. 이것을 입력하지 마세요!local getArgs = require('Module:Arguments').getArgs local ustring = mw.ustring local p = {} -- string.find function p.len( frame ) local new_args = p._getParameters( frame.args, {'s'} ) local s = new_args['s'] or '' return ustring.len( s ) end -- string.sub function p.sub( frame ) local args = getArgs(frame) local new_args = p._getParameters( 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 = ustring.len( s ) -- Convert negatives for range checking 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 p._error( 'String subset index out of range' ) end if j < i then return p._error( 'String subset indices out of order' ) end return ustring.sub( s, i, j ) end -- 다른 모듈에서 require 되는 함수 function p._match( s, pattern, start, match_index, plain_flag, nomatch ) if s == '' then return p._error( 'Target string is empty' ) end if pattern == '' then return p._error( 'Pattern string is empty' ) end start = tonumber(start) or 1 if math.abs(start) < 1 or math.abs(start) > ustring.len( s ) then return p._error( 'Requested start is out of range' ) end if match_index == 0 then return p._error( 'Match index is out of range' ) end if plain_flag then pattern = p._escapePattern( pattern ) end local result if match_index == 1 then -- Find first match is simple case result = ustring.match( s, pattern, start ) else if start > 1 then s = ustring.sub( s, start ) end local iterator = ustring.gmatch(s, pattern) if match_index > 0 then -- Forward search for w in iterator do match_index = match_index - 1 if match_index == 0 then result = w break end end else -- Reverse search 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 p._error( 'Match not found' ) else return nomatch end else return result end end -- string.match function p.match( frame ) local args = getArgs(frame) local new_args = p._getParameters( args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} ) local s = new_args['s'] or '' local start = tonumber( new_args['start'] ) or 1 local plain_flag = p._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'] return p._match( s, pattern, start, match_index, plain_flag, nomatch ) end -- function p.pos( frame ) local args = getArgs(frame) local new_args = p._getParameters( 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) > ustring.len( target_str ) then return p._error( 'String index out of range' ) end return ustring.sub( target_str, pos, pos ) end -- string.find function p.find( frame ) local args = getArgs(frame) local new_args = p._getParameters( 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 false if source_str == '' or pattern == '' then return 0 end plain = p._getBoolean( plain ) local start = ustring.find( source_str, pattern, start_pos, plain ) if start == nil then start = 0 end return start end function p.find_( str1, str2 , str3, str4) local source_str = str1 or '' local pattern_str = str2 or '' local start_ = str3 or 1 local plain_ = str4 or false if source_str == '' or pattern_str == '' then return 0 end plain_ = p._getBoolean( plain_ ) local start = ustring.find( source_str, pattern_str, start_, plain_ ) if start == nil then start = 0 end return start end function p.ifexist( frame ) local args = getArgs(frame) local new_args = p._getParameters( args, {'source', 'target', 'return1', 'return2' } ) local source_str = new_args['source'] or '' local pattern = new_args['target'] or '' local return1 = new_args['return1'] or '' local return2 = new_args['return2'] or '' if p.find_( source_str, pattern) == 0 then return return2 else return return1 end end function p.ifexist_( source_str, pattern, return1, return2 ) if p.find_( source_str, pattern) == 0 then return return2 else return return1 end end -- string.gsub function p.gsub( frame ) local new_args = p._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 = p._getBoolean( plain ) if plain then pattern = p._escapePattern( pattern ) replace = ustring.gsub( replace, "%%", "%%%%" ) --Only need to escape replacement sequences. end local result if count ~= nil then if replace == '제거' or replace == nil then result = ustring.gsub( source_str, pattern, '', count) else result = ustring.gsub( source_str, pattern, replace, count ) end else if replace == '제거' or replace == nil then result = ustring.gsub( source_str, pattern, '') else result = ustring.gsub( source_str, pattern, replace ) end end return result end -- string.rep function p.rep( frame ) local repetitions = tonumber( frame.args[2] ) if not repetitions then return p._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' ) end return ustring.rep( frame.args[1] or '', repetitions ) end -- string.upper function p.upper( frame ) local new_args = p._getParameters( frame.args, { 's' } ) local s = new_args['s'] or '' return ustring.upper( s ) end -- string.lower function p.lower( frame ) local new_args = p._getParameters( frame.args, { 's' } ) local s = new_args['s'] or '' return ustring.lower( s ) end function p.reverse( frame ) local new_args = p._getParameters( frame.args, { 's' } ) local s = new_args['s'] or '' local str = "" for token in ustring.gmatch(s, ".") do str = token..str end return str end -- string.byte의 유니코드 호환 버전 function p.tounicode( frame ) local args = getArgs( frame ) local s = args[1] or -1 if s == -1 then return '입력값이 없습니다.' else return 'U+'..ustring.upper(string.format("%x", ustring.codepoint(s))) end end function p.tounicode_( char ) local s = char or -1 if s == -1 then return 0 else return 'U+0'..ustring.upper(string.format("%x", ustring.codepoint(s))) end end -- string.char function p.char( frame ) local args = getArgs(frame) local new_args = p._getParameters( args, { 'c' } ) local c = tonumber(new_args['c']) return ustring.char( c ) end function p.escapePattern( frame ) local args = getArgs(frame) local pattern_str = args[1] if not pattern_str then return p._error( 'No pattern string specified' ) end local result = p._escapePattern( pattern_str ) return result end function p.count(frame) local args_ = getArgs(frame) local args = p._getParameters(args_, {'source', 'pattern', 'plain'}) local source = args.source or '' local pattern = args.pattern or '' local plain = p._getBoolean(args.plain or true) if plain then pattern = p._escapePattern(pattern) end local _, count = ustring.gsub(source, pattern, '') return count end function p.count_(str, pattern) local _, count = ustring.gsub(str, pattern, '') return count end --[[ endswith This function determines whether a string ends with another string. ]] function p.endswith(frame) local args_ = getArgs(frame) local args = p._getParameters(args_, {'source', 'pattern'}) local source = args.source or '' local pattern = args.pattern or '' if pattern == '' then -- All strings end with the empty string. return "yes" end if ustring.sub(source, -ustring.len(pattern), -1) == pattern then return "yes" else return "" end end function p.join(frame) local args = getArgs(frame) local table_ = {} local sep = args[1] local i, j = 2, 1 -- args,table while args[i] ~= nil do if args[i] ~= '_' then table_[j] = args[i] i = i + 1 j = j + 1 else i = i + 1 end end return table.concat(table_, sep) end --[[ Helper function that populates the argument list given that user may need to use a mix of named and unnamed 변수. This is relevant because named 변수 are not identical to unnamed 변수 due to string trimming, and when dealing with strings we sometimes want to either preserve or remove that whitespace depending on the application. ]] function p._getParameters( frame_args, arg_list ) local new_args = {} local index = 1 local value for _, 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 --[[ Helper function to handle error messages. ]] function p._error( error_str ) local frame = mw.getCurrentFrame() local error_category = frame.args.error_category or 'String 모듈에 의해 보고된 오류' local ignore_errors = frame.args.ignore_errors or false local no_category = frame.args.no_category or false if p._getBoolean(ignore_errors) then return '' end local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>' if error_category ~= '' and not p._getBoolean( no_category ) then error_str = '[[Category:' .. error_category .. ']]' .. error_str end return error_str end --[[ Helper Function to interpret boolean strings ]] function p._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( 'No boolean value found' ) end return boolean_value end --[[ Helper function that escapes all pattern characters so that they will be treated as plain text. ]] function p._escapePattern( pattern_str ) return ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" ) end return p 요약: 리브레 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 3.0 라이선스로 배포됩니다(자세한 내용에 대해서는 리브레 위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요. 글이 직접 작성되었거나 호환되는 라이선스인지 확인해주세요. 리그베다 위키, 나무위키, 오리위키, 구스위키, 디시위키 및 CCL 미적용 사이트 등에서 글을 가져오실 때는 본인이 문서의 유일한 기여자여야 하고, 만약 본인이 문서의 유일한 기여자라는 증거가 없다면 그 문서는 불시에 삭제될 수 있습니다. 취소 편집 도움말 (새 창에서 열림) | () [] [[]] {{}} {{{}}} · <!-- --> · [[분류:]] · [[파일:]] · [[미디어:]] · #넘겨주기 [[]] · {{ㅊ|}} · <onlyinclude></onlyinclude> · <includeonly></includeonly> · <noinclude></noinclude> · <br /> · <ref></ref> · {{각주}} · {|class="wikitable" · |- · rowspan=""| · colspan=""| · |} {{lang|}} · {{llang||}} · {{인용문|}} · {{인용문2|}} · {{유튜브|}} · {{다음팟|}} · {{니코|}} · {{토막글}} {{삭제|}} · {{특정판삭제|}}(이유를 적지 않을 경우 기각될 가능성이 높습니다. 반드시 이유를 적어주세요.) {{#expr:}} · {{#if:}} · {{#ifeq:}} · {{#iferror:}} · {{#ifexist:}} · {{#switch:}} · {{#time:}} · {{#timel:}} · {{#titleparts:}} __NOTOC__ · __FORCETOC__ · __TOC__ · {{PAGENAME}} · {{SITENAME}} · {{localurl:}} · {{fullurl:}} · {{ns:}} –(대시) ‘’(작은따옴표) “”(큰따옴표) ·(가운뎃점) …(말줄임표) ‽(물음느낌표) 〈〉(홑화살괄호) 《》(겹화살괄호) ± − × ÷ ≈ ≠ ∓ ≤ ≥ ∞ ¬ ¹ ² ³ ⁿ ¼ ½ ¾ § € £ ₩ ¥ ¢ † ‡ • ← → ↔ ‰ °C µ(마이크로) Å °(도) ′(분) ″(초) Α α Β β Γ γ Δ δ Ε ε Ζ ζ Η η Θ θ Ι ι Κ κ Λ λ Μ μ(뮤) Ν ν Ξ ξ Ο ο Π π Ρ ρ Σ σ ς Τ τ Υ υ Φ φ Χ χ Ψ ψ Ω ω · Ά ά Έ έ Ή ή Ί ί Ό ό Ύ ύ Ώ ώ · Ϊ ϊ Ϋ ϋ · ΐ ΰ Æ æ Đ(D with stroke) đ Ð(eth) ð ı Ł ł Ø ø Œ œ ß Þ þ · Á á Ć ć É é Í í Ĺ ĺ Ḿ ḿ Ń ń Ó ó Ŕ ŕ Ś ś Ú ú Ý ý Ź ź · À à È è Ì ì Ǹ ǹ Ò ò Ù ù · İ Ż ż ·  â Ĉ ĉ Ê ê Ĝ ĝ Ĥ ĥ Î î Ĵ ĵ Ô ô Ŝ ŝ Û û · Ä ä Ë ë Ï ï Ö ö Ü ü Ÿ ÿ · ǘ ǜ ǚ ǖ · caron/háček: Ǎ ǎ Č č Ď ď Ě ě Ǐ ǐ Ľ ľ Ň ň Ǒ ǒ Ř ř Š š Ť ť Ǔ ǔ Ž ž · breve: Ă ă Ğ ğ Ŏ ŏ Ŭ ŭ · Ā ā Ē ē Ī ī Ō ō Ū ū · à ã Ñ ñ Õ õ · Å å Ů ů · Ą ą Ę ę · Ç ç Ş ş Ţ ţ · Ő ő Ű ű · Ș ș Ț ț 이 문서에서 사용한 틀: 틀:새로고침 (원본 보기) (준보호됨)틀:설명문서 (원본 보기) (준보호됨)틀:알림바 (원본 보기) (보호됨)틀:퍼온문서 (원본 보기) (준보호됨)모듈:Arguments (편집) 모듈:String (편집) 모듈:String/설명문서 (편집) 이 문서는 다음의 숨은 분류 1개에 속해 있습니다: 분류:퍼온 문서