틀:Str index

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색
Template-info.svg 틀 설명문서 [편집] [역사] [새로 고침]

{{str index}} 틀은 문자열에서 지정한 위치의 문자를 추출하는 메타 틀입니다.

사용법[편집]

다음과 같이 쓰면 문자열에서 지정된 번호 위치의 문자를 출력합니다.

{{str index | 문자열 | 번호 }}

코드 길이를 최적화하고 오류 발생 가능성을 줄이려면 다음과 같이 씁니다. 문자열에 등호(=)가 포함된 경우의 잘못된 동작을 방지합니다.

{{str index|1=|2=}}
  • 문자열은 최대 500자까지 가능하며, 아래의 문자만을 지원합니다. 지원 못하는 문자에 대해서는 오류 메시지를 출력합니다. 같이 보기 문단 참조.
  • 영문 대소문자 A~Z, a~z
  • 숫자 0~9
  • 특수 기호 !@#$%^&*().,<>:;[]'"?/\{}~`=-|+_♣♦♥♠
  • 공백
  • 공백( )에 대해서는 &#32;를 출력하는데, 이는 때에 따라 다르게 출력될 수 있으므로 주의가 필요합니다. 사용 예 참조.
  • 문자열에 문자 참조는 사용할 수 없습니다. 사용할 경우 예상치 못한 오류가 발생할 수 있습니다.
  • 번호는 왼쪽에서 1부터 세며, 500까지 지정할 수 있습니다. 1미만, 500 초과, 빈 값, 미지정의 경우에는 오류 메시지를 출력합니다.
  • 오류 메시지가 출력되는 경우, 해당 글은 숨은 분류인 분류:문자열 처리 틀이 잘못 쓰인 글에 들어갑니다.

사용 예[편집]

간단한 사용 예:

입력 결과
{{str index | ABC XYZ | 5 }} X
{{str index | ABC XYZ | 1 }} A

주어진 문자열 안의 공백( )도 한 문자로 취급되며, 연속된 공백도 그 수 만큼 문자로 취급됩니다. 단, 출력에서 공백이 사라지거나 '&#32;'라는 문자열로 처리될 수도 있습니다. 다음 예를 참고하세요.

입력 결과
{{str index | 3   spaces here. | 5 }} s
{{str index | 3   spaces here. | 4 }}
a{{str index | 3   spaces here. | 4 }}c a c
{{str left | a{{str index | 3   spaces here. | 4 }}c | 5 }} a ca
{{str left | a{{str index | 3   spaces here. | 4 }}c | 6 }} a ca c

만약 문자열에 등호(=)가 포함되어 있으면 틀 사용시 이름 있는 매개변수로 취급되기 때문에 오류가 생깁니다. 이를 방지하기 위해서는 이름 있는 매개변수를 사용하면 됩니다. 매개변수 이름으로는 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&nbsp;c | 3 }} n 'c'를 의도한 입력.
{{str index | a&nbsp;c | 8 }} c 문자참조 &nbsp;가 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

같이 보기[편집]