목차
- truncate() 예제 - 문자열을 지정 길이로 자르기
- truncate() 정의
- truncate() 구문
truncate() 예제 - 문자열을 지정 길이로 자르기
{{ "foo bar baz qux"|truncate(9) }}
결과값: "foo..."
- {{ "foo bar baz qux"|truncate(9, False, "...", 5) }}와 같음.
- (문자열길이= 15)보다 (length 9 + leeway 5 = 14)값이 더 작아서 자르기 작동 O.
- "foo bar b" 까지가 9인데, 맨 뒤를 점 3개로 대체하면 "foo ba..."가 됨.
- killwords 매개변수 값이 False라서 중간의 "bar" 단어가 잘려서 "ba"가 되었으므로 해당 단어와 빈 공백을 버림.
- 결국, "foo..."가 됨.
{{ "foo bar baz qux"|truncate(9, True) }}
결과값: "foo ba..."
- {{ "foo bar baz qux"|truncate(9, True, "...", 5) }}와 같음.
- (문자열길이= 15)보다 (length 9 + leeway 5 = 14)값이 더 작아서 자르기 작동 O.
- "foo bar b" 까지가 9인데, 맨 뒤를 점 3개로 대체하면 "foo ba..."가 됨.
- killwords 매개변수 값이 True라서 정확히 해당 길이에서 자름.
- 결국, "foo ba..."가 됨.
{{ "foo bar baz qux"|truncate(11) }}
결과값: "foo bar baz qux"
- {{ "foo bar baz qux"|truncate(11, False, "...", 5) }}와 같음.
- (문자열길이= 15)보다 (length 11 + leeway 5 = 16)값이 더 커서 자르기 작동 X.
- 결국, "foo bar baz qux"가 됨.
{{ "foo bar baz qux"|truncate(11, False, '...', 0) }}
결과값: "foo bar..."
- {{ "foo bar baz qux"|truncate(11, Fasle, "...", 0) }}와 동일.
- (문자열길이= 15)보다 (length 11 + leeway 0 = 11)값이 더 작아서 자르기 작동 O.
- "foo bar baz" 까지가 11인데, 맨 뒤를 점 3개로 대체하면 "foo bar ..."가 됨.
- killwords 매개변수 값이 False라서 "..." 앞의 빈 공백을 날림.
- 결국, "foo bar..."가 됨.
PS. 문자열을 정확히 해당 길이에서 자르기
{{ "foo bar baz qux"|truncate(5, True, '', 0) }}
-> foo b
{{ "홈짱닷컴 Homzzang.com"|truncate(4, True, '', 0) }}
-> 홈짱닷컴
truncate() 정의
문자열을 지정 길이로 자른 복사본을 반환하는 필터.
1.
- 첫 번째 매개변수 length (자를길이) - (기본값: 255)
- 두 번째 매개변수 killwords (자름방식) - True: 정확히 해당 길이서 자름. / False: 잘린 마지막 단어를 버림.
- 세 번째 매개변수 end (잘림표시) - (기본값: ...)
- 네 번째 매개변수 leeway (허용오차) - 허용오차 범위 내 문자열은 안 자름.
2.
- 문자열 길이는 문자열 개수로 셈.
- 일반적으로 문자열 길이는 0부터 세지만, 이 필터에서는 문자열의 길이를 1부터 셈. 따라서 첫 번째 문자의 인덱스는 1이 되고, 문자열의 마지막 문자의 인덱스는 문자열 길이와 동일값이 됨.
- 문자열 길이를 문자 개수로 세려면 length() 필터 이용: {{ "홈짱닷컴 Homzzang.com"|length }} {# 17 #} / {{ "foo bar baz qux"|length }} {# 15 #}
3. 공식 매뉴얼
https://jinja.palletsprojects.com/en/3.1.x/templates/#jinja-filters.truncate
truncate() 구문
jinja-filters.truncate(s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) → str
[매개변수]
s: str
필수. 지정 길이로 자를 문자열.
length: int = 255
선택. 잘라낼 길이.
- 문자일 길이는 1부터 세며, 문자열 개수로 셈.
- end 매개변수에 포함된 문자열 포함 길이임.
killwords: bool = False
선택. 문자열을 정확히 자를지 여부 지정.
- True - 지정 길이에서 정확히 자름.
- False - 지정 길이 초과한 부분의 단어 자체를 버림. (기본값) (주의: (length + end) 길이가 단어 중간에 걸친 경우, 해당 단어와 끝의 빈 공백을 버림.)
end: str = '...'
선택. 지정 길이로 잘라진 문자열임을 표시하는 문자열.
leeway: int | None = None
선택. 문자열을 안 자를 허용 오차 범위 길이값.
- (length + leeway) 길이 이내 경우, 문자열을 자르지 않음.
- 기본값: (최신버전: 5), (구 버전: 0)이나 차후에 바뀔 지 모름.
[반환값]
문자열을 지정 길이로 자른 복사본을 반환.