티스토리 뷰

728x90

String은 유니코드를 지원하는 내장 문자열 클래스다. 문자열을 다루는 작업은 코딩 과정에서 자주 사용하는 것이므로 고도에서 제공하는 것을 정리하고 넘어간다.

 

var output_dir : String = dir.get_current_dir()
var blueprint_name := ""
label.text = String(canvas_number)

 

변수의 타입으로 문자열을 지정하기 위해서 String을 사용할 수도 있지만 ""로 문자열 상수를 직접 기술할 수도 있다. 문자열 리터럴은 다른 언어처럼 백 슬래시(\)를 에스케이프 문자로 사용할 수 있음을 "고도 스크립트 개요, 예약어와 연산자"에서 이미 다루었다. 다중 라인 문자열은 """로 기술한다. 위의 예제에서 blueprint_name은 빈 문자열을 통한 타입 추론 변수 선언 방법을 적용한 것이다.

 

위의 예제에서 label.text는 숫자를 기반으로 문자열을 생성하는 과정으로 bool, int, float, Vector2, Rect2, Vector3, Transform2D, Plane, Quat, AABB, Basis, Transform, Color, NodePath, RID, Dictionary, Array, PoolByteArray, PoolIntArray, PoolRealArray, PoolArray, PoolVector2Array, PoolVector3Array, PoolColorArray 등 대부분의 내장 타입을 사용할 수 있다.

 

■ 검사 메서드 

문자열에 대한 검사를 수행하고 bool 타입의 결과를 리턴한다.

bool begins_with ( String text )

   ☞ 지정한 문자열로 시작하면 true.  if file_name.begins_with("."):
bool ends_with ( String text )

   ☞ 지정한 문자열로 끝나면 true.  if not file_name.ends_with(".gd") :
bool empty ( )

   ☞ 빈 문자열(길이가 0) 이면 true.
bool is_abs_path ( )

   ☞ 파일이나 폴더 경로가 절대 경로면 true.
bool is_rel_path ( )

   ☞ 파일이나 폴더 경로가 상대 경로면 true.

bool is_subsequence_of ( String text )

   ☞ 지정한 문자열 중에 있으면 true. in 연산자 사용 가능.

bool is_subsequence_ofi ( String text )

   ☞ 대소문자를 가리지 않고 지정한 문자열 중에 있으면 true.

bool is_valid_filename ( )

   ☞ 파일명으로 허용되지 않는 : / \ ? * " | % < > 등의 문자가 없는 정상적인 파일명이면 true.
bool is_valid_float ( )

   ☞ 정상적인 실수면 true.
bool is_valid_hex_number ( bool with_prefix=false )

   ☞ 정상적인 16진수면 true. with_prefix를 true로 지정하면 0x존재도 검사
bool is_valid_html_color ( )

   ☞ 정상적인 HTML 색상 표현이면 true. #ffb2d90a b2d90a #붙여도 떼도 된다. RGB, ARGB 표현 모두 가능
bool is_valid_identifier ( )

   ☞ 정상적인 고도 변수명이면 true.
bool is_valid_integer ( )

   ☞ 정상적인 정수면 true.
bool is_valid_ip_address ( )

   ☞ 정상적인 IPv4 또는 IPv6 주소면 true.
bool match ( String expr )

   ☞ 와일드카드 검사. *는 여러문자, ?는 .을 제외한 한 문자. 정규식 검사 아님.
bool matchn ( String expr )

   ☞ 대소문자를 가리지 않는 와일드카드 검사. *는 여러 문자,? 는. 을 제외한 한 문자. 정규식 검사 아님.

 

■ 검색 및 비교 메서드 

검색은 특정 문자열의 위치를 찾으며 위치는 0부터 시작하고 찾지 못하면 -1을 리턴한다. 비교 결과는 작을 때 -1, 같으면 0, 크면 1을 리턴한다.

 

int casecmp_to ( String to )

   ☞ 유니코드 기반 문자열 비교.
int nocasecmp_to ( String to )

   ☞ 대소문자 가리지 않는 유니코드 기반 문자열 비교.
int naturalnocasecmp_to ( String to )

   ☞ 유니코드 기반 자연어 문자열 비교. 정렬에 유용. 문자열 "10"과 "2"의 단순 비교는 "10"이 작지만 자연어 비교는 "2"가 작은 것으로 처리되고, 소문자는 대문자로 바뀌어 비교된다.
int count ( String what, int from=0, int to=0 )

   ☞ 지정한 문자열의 출현 횟수. from과 to 모두 생략 시 전체, to만 생략 시 from부터 나머지 검색
int countn ( String what, int from=0, int to=0 )

   ☞ 대소문자 무관한 지정한 문자열의 출현 횟수. from과 to 모두 생략시 전체, to만 생략시 from부터 나머지 검색
int find ( String what, int from=0 )

   ☞ 지정한 문자열의 위치 리턴. from 지정 시 해당 위치부터 검색.
int findn ( String what, int from=0 )

   ☞ 대소문자 무관한 지정한 문자열의 위치 리턴. from 지정 시 해당 위치부터 검색.
int find_last ( String what )

   ☞ 지정한 문자열의 마지막 위치 리턴.
int rfind ( String what, int from=-1 )

   ☞ 지정한 문자열의 위치를 거꾸로 검색해서 리턴. from 지정시 해당 위치부터 검색.
int rfindn ( String what, int from=-1 )

   ☞ 대소문자 무관한 지정한 문자열의 위치를 거꾸로 검색해서 리턴. from 지정시 해당 위치부터 검색.
float similarity ( String text )

   ☞ 지정한 문자열과의 유사도를 1~0 사이의 값으로 리턴. 1은 일치, 0은 불일치를 의미

 

■ 추출 및 변경 메서드 

int to_int ( )

   ☞ 정수로 변환. 숫자 아닌 것은 없애고, .을 만나면 직전까지로 정수로 변환.
float to_float ( )

   ☞ 실수로 변환. 숫자 아닌 것을 만나면 직전까지 실수로 변환. e는 지수 처리.

int hex_to_int ( )

   ☞ 0x가 붙은 16진수 문자열을 정수로. 0x가 없으면 0 리턴.
int length ( )

   ☞문자열 내 문자의 개수.
int ord_at ( int at )  

   ☞ 지정한 위치의 문자코드 리턴. 
void erase ( int position, int chars )

   ☞ 지정한 위치 이후에서 지정한 문자를 제거. #var stra = "ABBBCD" stra.erase(2, ord("B")) --> AB
PoolByteArray to_ascii ( )

   ☞ 문자열을 ASCII 문자열로 감안하여 byte 배열로 변환. 
PoolByteArray to_utf8 ( )

   ☞ 문자열을 UTF-8 인코딩을 감안하여 byte 배열로 변환. 
PoolByteArray to_wchar ( )

   ☞ 문자열을 단순하게 byte 배열로 변환. 
PoolRealArray split_floats ( String delimiter, bool allow_empty=true )

   ☞ 문자열을 구분자로 나누어 실수 배열 리턴.
PoolStringArray rsplit ( String delimiter, bool allow_empty=true, int maxsplit=0 )

   ☞ 문자열을 구분자로 나누어 우측이 단어가 먼저 오도록 문자열 배열 리턴.
PoolStringArray split ( String delimiter, bool allow_empty=true, int maxsplit=0 )

   ☞ 문자열을 구분자로 나누어 문자열 배열 리턴.
PoolStringArray bigrams ( )

   ☞ 문자열을 연속된 두문자 쌍으로 이루어진 문자열 배열로 리턴.  # "ABBBCD" -> [AB, BB, BB, BC, CD]
int hash ( )

   ☞ 문자열을 대표하는 해시값 추출.

PoolByteArray md5_buffer ( )

   ☞ 문자열의 MD5 해시를 byte 배열로 리턴.

String md5_text ( )
   ☞ 문자열의 MD5 해시 문자열 리턴.
PoolByteArray sha1_buffer ( )

   ☞ 문자열의 SHA1 해시를 byte 배열로 리턴.
String sha1_text ( )
   ☞ 문자열의 SHA1 해시 문자열 리턴.
PoolByteArray sha256_buffer ( )

   ☞ 문자열의 SHA256 해시를 byte 배열로 리턴.

String sha256_text ( )
   ☞ 문자열의 SHA256 해시 문자열 리턴.

 

■ 편집 메서드 

편집 결과로 새로운 문자열을 산출한다.

 

String substr ( int from, int len=-1 )
   ☞ 지정 위치부터 길이만큼 추출. len을 지정하지 않으면 지정 위치부터 나머지 전부.
String right ( int position )
   ☞ 문자열 우측의 개수만큼 추출
String left ( int position )
   ☞ 문자열 좌측의 개수만큼 추출
String insert ( int position, String what )
   ☞ 지정 위치에 문자열을 삽입한 문자열 리턴.
String replace ( String src, String dest)
   ☞ 문자열에서 src를 dest로 바꾸어서 리턴.
String replacen ( String src, String dest)
   ☞ 문자열에서 src를 dest로 바꾸어서 리턴. 대소문자 구분 안 함.
String repeat ( int count )
   ☞ 문자열을 지정한 횟수만큼 반복한 문자열 리턴.
String capitalize ( )
   ☞ 단어 첫 문자를 대문자로. _를 공백으로, 단어 중간 대문자 앞에 공백 삽입. 각 단어의 첫 문자만 대문자로.
String to_lower ( )
   ☞ 소문자로.
String to_upper ( )
   ☞ 대문자로.
String trim_prefix ( String prefix )
   ☞ 지정한 문자열로 시작하면 해당 문자열을 제거하고 리턴. 아니면 그대로 리턴.
String trim_suffix ( String suffix )
   ☞ 지정한 문자열로 끝나면 해당 문자열을 제거하고 리턴. 아니면 그대로 리턴.
String rstrip ( String chars )
   ☞ 문자열 우측부터 지정한 문자 목록에 해당하지 않는 문자가 나올 때까지 제거한 문자열 리턴.
String lstrip ( String chars )
   ☞ 문자열 좌측부터 지정한 문자 목록에 해당하지 않는 문자가 나올 때까지 제거한 문자열 리턴.
String strip_edges ( bool left=true, bool right=true )
   ☞ 문자열 좌우측의 인쇄 불가능한 문자들을 제거해 리턴. 좌우를 생략하거나 각각 지정할 수 있다.
String strip_escapes ( )
   ☞ 모든 이스케이프 문자 제거. 공백을 제외한 컨트롤 문자들도 제거.
String pad_decimals ( int digits )
   ☞ 지정한 자릿수에 맞게 소수점 이후를 0으로 채움
String pad_zeros ( int digits )
   ☞ 지정한 자릿수에 맞게 소수점 이전을 0으로 채움
String format ( Variant values, String placeholder="{_}" )

 

   

문자열에서 {_}로 표시된 위치를 인수로 지정한 값으로 대치한 문자열 리턴.
String humanize_size ( int size )
   ☞ 지정한 수치를 B, KiB, MiB, GiB, TiB, PiB, EiB로 알맞게 붙여 리턴.
String indent ( String prefix )
   ☞ 각 라인을 지정한 문자열로 들여쓰기 한 문자열 리턴.
String dedent ( )
   ☞  들여쓰기 한 탭이나 공백을 제거한 문자열 리턴.
String validate_node_name ( )
   ☞ 노드명에 사용할 수 없는 . : @ / " 등의 문자를 제거하여 리턴.
String c_escape ( )
   ☞ 특수문자를 C언어 형태로 이스케이프 한 문자열 리턴.
String c_unescape ( )
   ☞ C언어 형태로 이스케이프 한 문자열을 원래대로 복원하여 리턴. \', \", \?, \\, \a, \b, \f, \n, \r, \t, \v만 지원.
String http_escape ( )
   ☞ URL encode 수행.
String http_unescape ( )
   ☞ URL decode 수행.
String xml_escape ( )
   ☞ 특수문자를 XML 표준에 맞게 이스케이프한 문자열 리턴.
String xml_unescape ( )
   ☞ XML 표준에 맞게 인코딩 된 특수문자를 복원.
String json_escape ( )
   ☞ 특수문자를 JSON 표준에 맞게 이스케이프 한 문자열 리턴.
String percent_decode ( )
   ☞ %로 인코딩 된 웹 메시지 복원.
String percent_encode ( )
   ☞ 웹 메시지를 %로 인코딩.
String get_base_dir ( )
   ☞ 파일 경로인 경우 기반 디렉터리 리턴
String get_basename ( )
   ☞ 파일 경로인 경우 확장자 제외한 전체 파일 경로 리턴
String get_extension ( )
   ☞ 파일 경로인 경우 확장자 리턴
String get_file ( )
   ☞ 파일 경로인 경우 파일명만 리턴
String plus_file ( String file )
   ☞ 파일 경로인 경우 지정한 경로를 뒤에 추가. 자동으로 구분자는 추가됨.
String simplify_path ( )

   ☞ 복잡한 경로를 단순화. # /home/ -> /home, /../ -> /, /usr//home ->/usr/home

728x90
댓글
글 보관함
최근에 올라온 글
최근에 달린 댓글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31