위키백과:루아 문자열 함수
Wikipedia이것은 에세이입니다. 여기에는 한 명 이상의 위키백과 기여자의 조언이나 의견이 포함되어 있습니다.이 페이지는 백과사전 기사도 아니고, 위키백과의 정책이나 지침 중 하나도 아닙니다. 커뮤니티의 철저한 검증이 이루어지지 않았기 때문입니다.일부 에세이는 광범위한 규범을 나타내고, 다른 에세이는 소수의 관점만을 나타냅니다. |
이 에세이는 Lua 문자열 함수를 나열하고 Wikipedia 페이지에서 텍스트 문자열을 처리하기 위한 Lua 스크립트의 사용에 대해 설명합니다.
모듈: 문자열
Lua 문자열 처리 기능의 주요 세트는 다음 모듈에 저장됩니다.끈.
성능 고려 사항
Lua 스크립트의 문자열 검색 기능은 초당 수백만 개의 문자를 비교하여 매우 빠르게 실행될 수 있습니다.예를 들어, 99개의 개별 단어(템플릿에서 99개의 매개 변수로 전달됨)에 대한 40,000자 기사 텍스트 검색은 Lua CPU 클럭 시간의 1초 이내에 실행되었습니다.그 총 시간은 긴 텍스트에 있는 각각의 99개 단어의 위치를 정확하게 파악하는 것을 포함했습니다. 텍스트 전체에 걸쳐 분산되어 있습니다.
문자열 제한
Lua는 230,000자를 초과하는 텍스트 문자열을 처리할 수 있으므로 문서 페이지의 형식화된 내용을 문자열 검색에 대한 입력으로 사용할 수 있습니다.그러나 nowiki-tag 요소 또는 사전 태그 요소에 포함된 숨겨진 문자열과 같이 문자열 내용에 몇 가지 제한이 있었습니다.
Lua 절단 텍스트에 "{" 토큰 또는 "<table>" 태그가 있는 위키 테이블이 포함된 "버그"가 있었던 것 같습니다.Lua는 전체 기사(모든 정보 상자, 스팬 태그, {convert}의 것, 범주 링크 및 탐색 상자 확장)를 검색하는 데 사용되었지만, "<!--...>" 또는 "..."를 포함하지 않는 한, 일부 위키 테이블에서 기사 내용에 대한 Lua의 보기는 첫 번째 위키블에서 멈추는 것처럼 보였습니다.그 행동은 루아가 모든 기사 페이지 데이터를 텍스트 문자열로 허용해야 하는 버그처럼 보입니다.또한 루아는 항상 길이가 43자인 노비키 태그 내부(또는 "pre" 태그 내부)를 볼 수 없으며 "<노비키..." 사이의 내용을 절대로 드러내지 않습니다.</nowiki>" 그러나 nowiki 태그 앞/뒤의 텍스트만 사용할 수 있습니다.
<table>의 예:작은 테이블에 효과가 있는 것 같습니다."<table>"의 효과를 Lua 기반 템플릿과 비교합니다.Str_find, 전체 문자열 길이 검색 시:
<table> 태그를 사용하여 이전에 문자열을 중지했습니다.또한 1열에 위키 가능한 "{"를 삽입하면 유사한 효과를 얻을 수 있습니다("{"가 "<table>" 태그를 생성하기 때문입니다).그러나 이 예에서는 올바른 것 같습니다.
<nowiki>의 예: "<nowiki>"의 효과를 Lua 기반 템플릿과 비교:Str_len, 전체 문자열 길이 가져오기:
"<nowiki>" 태그를 사용하면 텍스트는 숨겨지지만 +34자로 계산됩니다.따라서, Nw2의 경우, 길이는 4+34+4=42이고, Nw3는 4+34+2=40 문자를 생성합니다.
미디어의 mw.text.unstrip 함수Wiki의 "루아 참조 매뉴얼"(아직 활성화되지 않음)은 Nowiki 태그에 도움이 될 수 있습니다.참고:T47085).
참고 항목
- 영어 위키백과 관련 자료