String에 있는 함수

함수 기능 예시
FIND 문자열 찾기 FIND 'ABAP' IN lv_text.
REPLACE 문자열 바꾸기 REPLACE 'A' WITH 'B' INTO lv.
TRANSLATE 대소문자 변환 TRANSLATE lv TO LOWER CASE.
SHIFT 왼쪽/오른쪽 밀기 SHIFT lv LEFT DELETING LEADING space.
CONDENSE 공백 줄이기 CONDENSE lv.
OVERLAY 문자 덮어쓰기 OVERLAY lv WITH '***'.
CONCATENATE 연결 CONCATENATE a b INTO c.
SPLIT 나누기 SPLIT lv AT ',' INTO x y.

 

 

1. FIND – 문자열 찾기

- 문자열 안에 특정 단어가 존재하는지 확인

기본 문법

FIND '찾을문자' IN lv_text.

예제

DATA : gv_str type string,
	gv_chr(4) type c.
    
    gv_str = 'ABAP'.
    gv_chr = 'B'.
    
    find gv_chr in gv_str.
    if st_subrc eq 0.
    	write 'B FOUND'.
    endif.

=> B FOUND 출력!

위치를 알고 싶을 때 / 기본 문법

FIND 'abap' IN lv_text match offset lv_pos.

 

예제

DATA: lv_text TYPE string VALUE 'I love ABAP programming.',
      lv_pos  TYPE i.

FIND 'ABAP' IN lv_text MATCH OFFSET lv_pos.

WRITE: / 'ABAP 위치:', lv_pos.

결과 : ABAP 위치 : 7 (7번째 인덱스부터 시작)

 

2. REPLACE – 문자열 교체

문자열 안의 특정 단어를 다른 단어로 바꿈

기본 문법

 
REPLACE '기존문자' WITH '새문자' INTO lv_text.

예시

DATA lv_text TYPE string VALUE 'I love ABAP!'.
REPLACE 'love' WITH 'like' INTO lv_text.
WRITE: / lv_text. " 결과: I like ABAP!

예시2.

gv_str = 'ABAP'.
gc_chr = 'BBAP'.
REPLACE 'ABAP' WITH gv_chr INTO gv_str.
WRITE / gv_str.

=> 결과 : BBAP 

 

 

3. TRANSLATE – 대소문자 변환

대문자 ↔ 소문자 변환

문법

 
TRANSLATE lv_text TO UPPER CASE. " 대문자 
TRANSLATE lv_text TO LOWER CASE. " 소문자
 
예시

 

 
DATA lv_text TYPE string VALUE 'abap is great'. 
TRANSLATE lv_text TO UPPER CASE. 
WRITE: / lv_text. " 결과: ABAP IS GREAT

 

 

4. SHIFT – 문자 밀기

문자열을 왼쪽/오른쪽으로 밀면서 공백 제거 가능

 

문법

SHIFT lv_text LEFT DELETING LEADING space.
 

예시

 
DATA lv_text TYPE string VALUE ' ABAP!    '.
SHIFT lv_text LEFT DELETING LEADING space.
WRITE: / lv_text. " 결과: 'ABAP!    '

 

예시2 기본 shift 문법 (왼쪽이동)

gv_str = 'ABAP'.
SHIFT gv_str.
WRITE / gv_str.  " 결과 'BAP'

- 기본으로 shift문법은 왼쪽으로 이동이다. 

구문 설명
SHIFT lv LEFT 왼쪽으로 한 글자 밀기 (기본)
SHIFT lv RIGHT 오른쪽으로 한 글자 밀기
SHIFT lv LEFT DELETING LEADING space 앞쪽 공백 전부 제거
SHIFT lv RIGHT CIRCULAR 순환 이동 (맨 끝 글자가 앞으로 옴)

 

예시: 순환 이동

DATA lv TYPE string VALUE 'ABAP'. 
SHIFT lv RIGHT CIRCULAR. 
WRITE: / lv. " 결과: PABA

 

5. CONDENSE – 공백 압축

여러 공백을 하나로 줄이기, 양끝 공백도 제거 가능

문법

CONDENSE lv_text. " 기본: 중간 공백 압축 + 앞뒤 제거
CONDENSE lv_text NO-GAPS. " 모든 공백 제거
 

예시

DATA lv_text TYPE string VALUE ' ABAP IS FUN '.
CONDENSE lv_text.
WRITE: / lv_text. " 결과: 'ABAP IS FUN'
 

=> 중간 공백 압축 + 앞 뒤 제거가 된다.

=> `condense lv_tex2 no-gaps1` 하면 공백이 다 제거된다.

 

6. OVERLAY – 문자 겹쳐쓰기

기존 문자열을 다른 문자로 덮어쓰기

문법

OVERLAY lv_target WITH '****'.
예시

 

DATA lv_text TYPE string VALUE 'ABAP'.
OVERLAY lv_text WITH '####'.
WRITE: / lv_text. " 결과: ####
gv_str = '  B .    p  '.
gv_chr = 'AAAA'.
overlay gv_str with gv_chr.
write / gv_str.

 

7. CONCATENATE – 문자열 연결

여러 문자열을 하나로 합침

문법

CONCATENATE lv1 lv2 INTO lv_result [SEPARATED BY space].
 

예시

 
DATA: lv1 TYPE string VALUE 'Hello', lv2 TYPE string VALUE 'World', lv_result TYPE string.
CONCATENATE lv1 lv2 INTO lv_result SEPARATED BY space.
WRITE: / lv_result. " 결과: Hello World

gv_str 변수에 gv_chr를 합친다.

 

8. SPLIT – 문자열 나누기

구분자를 기준으로 문자열 분해

문법

SPLIT lv_text AT ',' INTO lv_a lv_b.
 

예시

DATA: lv_text TYPE string VALUE 'ABAP,PROGRAMMING', lv_a TYPE string, lv_b TYPE string.
SPLIT lv_text AT ',' INTO lv_a lv_b.
WRITE: / lv_a, / lv_b. " 결과: ABAP / PROGRAMMING

 

 

 

* 연습하기*

'Hello_World_42' → 'Hello', 'World', '42'로 나누고,
숫자 부분은 숫자로 바꿔서 2 더한 결과 출력하기

data lv_str type string value 'Hello_world_42', lv_a type string, lv_b type string, lv_c type i.
split lv_str at '_' into lv_a lv_b lv_c.
lv_c = lv_c + 2.
write / lv_c.

=> welcome to abap world 만들기

DATA lv_text TYPE string VALUE '##HELLO_world42##'.

REPLACE ALL OCCURRENCES OF '##' IN lv_text WITH ''.
REPLACE ALL OCCURRENCES OF '_' IN lv_text WITH ' '.
REPLACE ALL OCCURRENCES OF REGEX '[0-9]' IN lv_text WITH ''.
TRANSLATE lv_text TO LOWER CASE.
CONDENSE lv_text.

WRITE: / lv_text.  " 결과: hello world

 

 

출력 => hello world ####

+ Recent posts