위키백과:루아 문자열 함수

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, 전체 문자열 길이 검색 시:

  • {{str_find 123456789012 78}}→ 7
  • {{str_find 123456789012 90}}→ 9
  • {{str_find 1234<table><tr><td>5678</td></tr></table>9012 78}}→ 22
  • {{str_find 1234<table><tr><td>5678</td></tr></table>9012 90}}→ 42
  • {{str_find 12345<span>67890</span>12 78}}→ 13

<table> 태그를 사용하여 이전에 문자열을 중지했습니다.또한 1열에 위키 가능한 "{"를 삽입하면 유사한 효과를 얻을 수 있습니다("{"가 "<table>" 태그를 생성하기 때문입니다).그러나 이 예에서는 올바른 것 같습니다.

<nowiki>의 예: "<nowiki>"의 효과를 Lua 기반 템플릿과 비교:Str_len, 전체 문자열 길이 가져오기:

  • Nw1:{{str_len 123456789012}}→ 12
  • Nw2:{{str_len 1234<nowiki>5678</nowiki>9012}}→ 42
  • Nw3:{{str_len 1234<nowiki>567890</nowiki>12}}→ 40

"<nowiki>" 태그를 사용하면 텍스트는 숨겨지지만 +34자로 계산됩니다.따라서, Nw2의 경우, 길이는 4+34+4=42이고, Nw3는 4+34+2=40 문자를 생성합니다.

미디어의 mw.text.unstrip 함수Wiki의 "루아 참조 매뉴얼"(아직 활성화되지 않음)은 Nowiki 태그에 도움이 될 수 있습니다.참고:T47085).

참고 항목

영어 위키백과 관련 자료