틀:Str index
{{str index}} 틀은 문자열에서 지정한 위치의 문자를 추출하는 메타 틀입니다.
이 틀은 루아를 사용합니다. |
사용법
다음과 같이 쓰면 문자열에서 지정된 번호 위치의 문자를 출력합니다.
{{str index | 문자열 | 번호 }}
|
코드 길이를 최적화하고 오류 발생 가능성을 줄이려면 다음과 같이 씁니다. 문자열에 등호(=)가 포함된 경우의 잘못된 동작을 방지합니다.
{{str index|1=|2=}}
|
- 문자열은 최대 500자까지 가능하며, 아래의 문자만을 지원합니다. 지원 못하는 문자에 대해서는 오류 메시지를 출력합니다. 같이 보기 문단 참조.
- 영문 대소문자 A~Z, a~z
- 숫자 0~9
- 특수 기호 !@#$%^&*().,<>:;[]'"?/\{}~`=-|+_♣♦♥♠
- 공백
- 공백( )에 대해서는  를 출력하는데, 이는 때에 따라 다르게 출력될 수 있으므로 주의가 필요합니다. 사용 예 참조.
- 문자열에 문자 참조는 사용할 수 없습니다. 사용할 경우 예상치 못한 오류가 발생할 수 있습니다.
- 번호는 왼쪽에서 1부터 세며, 500까지 지정할 수 있습니다. 1미만, 500 초과, 빈 값, 미지정의 경우에는 오류 메시지를 출력합니다.
- 오류 메시지가 출력되는 경우, 해당 글은 숨은 분류인 분류:문자열 처리 틀이 잘못 쓰인 글에 들어갑니다.
사용 예
간단한 사용 예:
입력 | 결과 |
---|---|
{{str index | ABC XYZ | 5 }} |
X
|
{{str index | ABC XYZ | 1 }} |
A
|
주어진 문자열 안의 공백( )도 한 문자로 취급되며, 연속된 공백도 그 수 만큼 문자로 취급됩니다. 단, 출력에서 공백이 사라지거나 ' '라는 문자열로 처리될 수도 있습니다. 다음 예를 참고하세요.
입력 | 결과 |
---|---|
{{str index | 3 spaces here. | 5 }} |
a
|
{{str index | 3 spaces here. | 4 }} |
p
|
a{{str index | 3 spaces here. | 4 }}c |
apc
|
{{str left | a{{str index | 3 spaces here. | 4 }}c | 5 }} |
apcap
|
{{str left | a{{str index | 3 spaces here. | 4 }}c | 6 }} |
apcapc
|
만약 문자열에 등호(=)가 포함되어 있으면 틀 사용시 이름 있는 매개변수로 취급되기 때문에 오류가 생깁니다. 이를 방지하기 위해서는 이름 있는 매개변수를 사용하면 됩니다. 매개변수 이름으로는 1, 2를 쓰면 됩니다. 다음 예는 문자열 'ab=cde'의 세 번째 문자를 출력하고자 하는 코드입니다.
입력 | 결과 | 설명 |
---|---|---|
{{str index | 1= ab=cde | 2= 3 }} |
= |
(올바른 예) 올바르게 동작함. |
{{str index | ab=cde | 3 }} |
String Module Error: String index out of range |
(잘못된 예) 엉뚱한 결과가 출력됨. |
잘못된 사용 예
번호를 잘못 지정:
입력 | 결과 |
---|---|
{{str index | ABC XYZ | 10 }} |
String Module Error: String index out of range
|
{{str index | ABC XYZ | 0 }} |
String Module Error: String index out of range
|
{{str index | ABC XYZ | }} |
String Module Error: String index out of range
|
{{str index | ABC XYZ }} |
String Module Error: String index out of range
|
지원하지 않는 문자열:
입력 | 결과 |
---|---|
{{str index | 소년이여 야망을 가져라 | 7 }} |
망
|
{{str index | àçé | 2 }} |
ç
|
문자 참조 사용은 지원되지 않음:
입력 | 결과 | 설명 |
---|---|---|
{{str index | a c | 3 }} |
n |
'c'를 의도한 입력. |
{{str index | a c | 8 }} |
c |
문자참조 가 6자의 문자로 처리되어 출력됨. |
- 수치 문자 참조를 사용할 경우 예상치 못한 심각한 오류가 발생할 수 있습니다.
기술적인 내용
문자열에 위키 마크업 표현이 사용될 경우 잘못 처리될 수 있습니다. <nowiki> 태그는 내부적으로 고유의 제어문을 통해 처리됩니다. 제어문은 제어 문자 \x07(BELL)과 'UNIQ'로 시작하여 'QINU'와 제어 문자로 끝나는 43바이트 길이의 문자열입니다. 이 제어문은 최종적으로 생성된 HTML 페이지에서는 표시되지 않아야 정상입니다. 그러나 다음과 같이 제어문이 그대로 출력될 수도 있습니다. 버그질라:22555 참고.
입력 | 결과 | 설명 |
---|---|---|
{{str index | a<nowiki/>bc | 3 }} |
' |
'c'를 의도한 입력이나 제어문 시작 부분의 'U'가 출력됨. |
{{str index | a<nowiki/>bc | 23 }} |
0 |
제어문의 일부가 출력됨. |
{{str index | a<nowiki/>bc | 43 }} |
String Module Error: String index out of range |
제어문 마지막 부분의 'U'가 출력됨. |
{{str index | a<nowiki/>bc | 45 }} |
String Module Error: String index out of range |
제어문 43바이트가 끝나고 'b'가 출력됨. |
<nowiki>의 경우와 달리, HTML 주석이나 <noinclude>, <includeonly> 등의 위키 마크업 표현은 올바르게 처리됩니다. 이는 해당 표현이 매직워드까지 넘어가지 않고 틀 자체에서 전처리되기 때문입니다.
입력 | 결과 |
---|---|
{{str index | a<noinclude/>bc | 3 }} |
c
|
{{str index | a<!-- 주석 -->bc | 3 }} |
c
|