틀:Str left
{{str left}} 틀은 문자열을 지정한 길이로 만들어 주는 틀입니다. 주어진 문자열이 지정한 길이보다 길면 자르고, 짧으면 반복합니다.
사용법[원본 편집]
이 틀을 쓸 때에는 다음과 같이 2개의 이름 없는 매개변수를 씁니다.
{{str left | 문자열 | 길이 }}
|
코드 길이를 최적화하고 오류 발생 가능성을 줄이려면 다음과 같이 씁니다. 문자열에 등호(=)가 포함된 경우의 잘못된 동작을 방지합니다.
{{str left|1=|2=}}
|
- 길이(매개변수 2)가 잘못된 수이거나 비어 있으면, 텅 빈 문자열을 출력합니다. 길이가 아예 미정의되어 있으면 1로 간주됩니다.
- 출력되는 결과는 최대 500자입니다. 그 이상의 문자열은 잘립니다.
- 다른 틀을 사용하지 않으므로 서버 부하가 적습니다.
- 주어진 문자열에 연속된 공백이나 위키 마크업 표현 등이 들어 있으면 의도하지 않은 결과를 출력할 수도 있습니다. '사용 예' 문단과 '제한점 및 알려진 버그' 문단을 참고하세요.
사용 예[원본 편집]
간단한 사용 예:
입력 | 결과 |
---|---|
{{str left | ABC XYZ | 5 }} |
ABC X
|
{{str left | ABC XYZ | 10 }} |
ABC XYZABC
|
{{str left | ABC XYZ | 1 }} |
A
|
{{str left | ABC XYZ | 0 }} |
|
{{str left | ABC XYZ | }} |
|
{{str left | ABC XYZ }} |
A
|
주어진 문자열 안의 공백( )도 한 문자로 취급되며, 연속된 공백도 그 수 만큼 문자로 취급됩니다. 단, 출력에서는 중복된 공백이나 문자열 끝의 공백은 사라집니다. 다음 예를 참고하세요.
입력 | 결과 |
---|---|
{{str left | 3 spaces here. | 5 }} |
3 spa
|
{{str left | 3 spaces here. | 4 }} |
3 sp
|
한글처럼, 유니코드에는 지정되어 있으나 아스키 코드에 미포함된 문자를 문자열로 지정하면 한 문자의 바이트에 상관 없이 문자 수를 셉니다. 과거에 문제가 있던 기능으로, 현재 한국어판 위키백과에서는 올바르게 동작합니다. 버그질라:16852 참고.
입력 | 결과 |
---|---|
{{str left | 소년이여 야망을 가져라 | 7 }} |
소년이여 야망
|
{{str left | àçé | 5 }} |
àçéàç
|
만약 문자열에 등호(=)가 포함되어 있으면 틀 사용시 이름 있는 매개변수로 취급되기 때문에 오류가 생깁니다. 이를 방지하기 위해서는 이름 있는 매개변수를 사용하면 됩니다. 매개변수 이름으로는 1, 2를 쓰면 됩니다. 다음 예는 문자열 'ab=cde'를 다섯 자로 맞추는 것을 의도하는 코드입니다.
입력 | 결과 | 설명 |
---|---|---|
{{str left | 1= ab=cde | 2= 5 }} |
ab=cd |
(올바른 예) 올바르게 동작함. |
{{str left | ab=cde | 5 }} |
5 |
(잘못된 예) 엉뚱한 결과가 출력됨. |
제한점 및 알려진 버그[원본 편집]
이 틀은 위키백과 매직워드인 {{padleft:}}를 변칙적으로 사용합니다. 틀에 주어진 문자열을 {{padleft:}}의 세 번째 매개변수로 입력하는데, {{padleft:}} 기능은 그에 대해 별다른 오류 검증을 하지 않기 때문에 문자열의 유효 문자 수를 잘못 셀 수 있습니다. 또한 해당 매개변수는 그 크기가 500자로 제한됩니다.
문자열에 문자 참조가 포함될 경우 다음과 같이 잘못 처리될 수 있습니다.
입력 | 결과 | 설명 |
---|---|---|
{{str left | a c | 3 }} |
a&n |
'a c'를 의도한 입력. |
{{str left | a c | 8 }} |
a c |
문자참조 가 6자의 문자로 처리되어 출력되고, 이것이 브라우저에서 공백으로 처리됨. |
{{str left | aBc | 3 }} |
a&# |
'abc'를 의도한 입력. |
{{str left | a c | 3 }} |
a&# |
'a c'를 의도한 입력. |
문자열에 위키 마크업 표현이 사용될 경우 잘못 처리될 수 있습니다. <nowiki> 태그는 내부적으로 고유의 제어문을 통해 처리됩니다. 제어문은 제어 문자 \x07(BELL)과 'UNIQ'로 시작하여 'QINU'와 제어 문자로 끝나는 43바이트 길이의 문자열입니다. 이 제어문은 최종적으로 생성된 HTML 페이지에서는 표시되지 않아야 정상입니다. 그러나 다음과 같이 제어문이 그대로 출력될 수도 있습니다. 버그질라:22555 참고.
입력 | 결과 | 설명 |
---|---|---|
{{str left | a<nowiki/>bc | 3 }} |
abc |
'abc'를 의도한 입력이나 제어문의 첫 두 바이트가 출력됨. |
{{str left | a<nowiki/>bc | 43 }} |
abcabcabcabcabcabcabcabcabcabcabcabcabcabca |
제어문 중 42바이트가 출력됨. |
{{str left | a<nowiki/>bc | 44 }} |
abcabcabcabcabcabcabcabcabcabcabcabcabcabcab |
제어문 43바이트가 43개의 문자로 처리 및 출력되었으나 최종 HTML 페이지 생성 과정에서 사라짐. |
{{str left | a<nowiki/>bc | 45 }} |
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabc |
제어문 43바이트가 끝나고 'b'가 출력됨. |
<nowiki>의 경우와 달리, HTML 주석이나 <noinclude>, <includeonly> 등의 위키 마크업 표현은 올바르게 처리됩니다. 이는 해당 표현이 매직워드까지 넘어가지 않고 틀 자체에서 전처리되기 때문입니다.
입력 | 결과 |
---|---|
{{str left | a<noinclude/>bc | 3 }} |
abc
|
{{str left | a<!-- 주석 -->bc | 3 }} |
abc
|