CUBLOC2에서 문자열은 독립된 String 변수형 대신 1차원 Byte 배열로 관리됩니다.
Dim Str() As Byte = "Comfile Technology" ' 맨끝에 자동으로 NULL 값이 들어갑니다. Dim Str1() = "Comfile Technology" ' As Byte는 생략 가능
문자열을 비우려면 배열의 첫 번째 요소에 0을 대입합니다.
일반 BASIC의 Str = “” 와 동일한 효과입니다.
Dim Sarr(32) As Byte ' 크기를 지정하여 배열 선언 Sarr(0) = 0 ' 문자열 초기화 (비우기)
참고: 첫 번째 바이트를 NULL값인 0으로 설정하면 Null 종결자로 인식되어 빈 문자열로 처리됩니다. 배열 전체를 0으로 채울 필요는 없습니다.
| 함수 | 설명 | 주의사항 | 사용 예 |
|---|---|---|---|
| Len | 문자열의 길이를 반환합니다. Null 문자는 포함되지 않습니다. | 한글은 1글자당 3개로 계산됩니다. | Ires = Len(Sarr()) |
| Strcopy | Sarr2의 문자열을 Sarr1에 복사합니다. | Sarr1의 크기가 충분해야 합니다. | Strcopy(Sarr1(), Sarr2()) |
| 함수 | 설명 | 주의사항 | 사용 예 |
|---|---|---|---|
| Strcat | Sarr2를 Sarr1의 끝에 이어 붙입니다. | Sarr1의 크기가 두 문자열을 합친 길이보다 커야 합니다. | Strcat(Sarr1(), Sarr2()) |
| 함수 | 설명 | 반환값 | 사용 예 |
|---|---|---|---|
| Strcomp | 두 문자열을 비교합니다. | 같으면 0, Sarr1이 크면 양수, 작으면 음수 | Ires = Strcomp(Sarr1(), Sarr2()) |
| Strcomp | 두 문자열을 최대 n자까지 비교합니다. | 같으면 0, Sarr1이 크면 양수, 작으면 음수 | Ires = Strcomp(Sarr1(), Sarr2(), n) |
| 함수 | 설명 | 반환값 | 사용 예 |
|---|---|---|---|
| Instr | 문자열에서 특정 문자가 처음 나타나는 위치를 찾습니다. | 찾은 위치의 인덱스, 없으면 0 | Ires = Instr(Sarr(), “A”) |
| Instr | 문자열에서 특정 부분 문자열을 찾습니다. | 찾은 위치의 인덱스, 없으면 0 | Ires = Instr(Sarr1(), Sarr2()) |
| 함수 | 설명 | 주의사항 | 사용 예 |
|---|---|---|---|
| Left | Ssrc의 앞에서 n자를 Sdest에 복사합니다. | Sdest의 크기가 충분해야 합니다. | Left(Sdest(), Ssrc(), n) |
| Right | Ssrc의 뒤에서 n자를 Sdest에 복사합니다. | Sdest의 크기가 충분해야 합니다. | Right(Sdest(), Ssrc(), n) |
| Mid | Ssrc의 start 위치부터 n자를 Sdest에 복사합니다. | Sdest의 크기가 충분해야 합니다. | Mid(Sdest(), Ssrc(), start, n) |
숫자나 여러 값을 문자열로 변환할 때 사용합니다.
| 함수 | 설명 | 사용 예 |
|---|---|---|
| Format | 형식 문자열에 따라 값을 문자열로 변환하여 Byte 배열에 저장합니다. 최대 n자까지만 저장하므로 버퍼 초과를 방지합니다. | Format(Sarr(), n, “%d”, Ival) |
주요 서식 지정자는 다음과 같습니다.
| 서식 | 설명 | 예시 |
|---|---|---|
%d | Integer 정수 | Format(Sarr(), 16, “%d”, Ival) |
%f | Single 실수 | Format(Sarr(), 16, “%f”, Fval) |
%.2f | 소수점 이하 2자리 실수 | Format(Sarr(), 16, “%.2f”, Fval) |
%s | 문자열 | Format(Sarr1(), 32, “%s”, Sarr2()) |
%x | 16진수 정수 | Format(Sarr(), 16, “%x”, Ival) |
| 함수 | 설명 | 반환값 | 사용 예 |
|---|---|---|---|
| Val | 문자열을 Integer로 변환합니다. 변환할 수 없는 문자가 나오면 그 앞까지만 변환합니다. | Integer | Ires = Val(Sarr()) |
| Valf | 문자열을 Single 실수로 변환합니다. 변환할 수 없는 문자가 나오면 그 앞까지만 변환합니다. | Single | Fres = Valf(Sarr()) |
참고: 한글(UTF-8)은 한 글자당 3바이트를 차지합니다. 배열 크기 선언 시 이를 고려하십시오.
예) 8글자 한글 문자열의 경우 최소 (8 × 3) + 1 = 25바이트가 필요합니다.
Sarr(), Sdest(), Ssrc() : 문자열을 담는 Byte 배열 (Dim Sarr() As Byte)Sarr1(), Sarr2() : 두 개의 Byte 배열이 필요한 경우Ires : 정수형 결과 변수 (Dim Ires As Integer)Fres : 실수형 결과 변수 (Dim Fres As Single)n : 처리할 문자 수 (정수)start : 시작 위치 (정수, 0부터 시작)'============================== ' String Function Test '============================== Dim Str1() = "Comfile Technology" '원본 문자열 Dim Str2(50) As Byte '복사용 버퍼 Dim Str3(50) As Byte '미사용 Dim Str4() = "logy" '검색할 부분 문자열 Dim Str5(50) As Byte 'Left 결과 저장용 버퍼 Dim Ival As Integer Wait 500 '------------------------------ ' 1. 문자열 복사 '------------------------------ Strcopy(Str2(), Str1()) Print "Len(Str1) = ", Dec Len(Str1()), Cr Print "Str2 = ", Str2(), Cr '------------------------------ ' 2. 문자열 비교 '------------------------------ Print "Comp(Str1, Str2) = ", Dec Strcomp(Str1(), Str2()), Cr '------------------------------ ' 3. 문자열 이어붙이기 '------------------------------ Strcat(Str2(), Str1()) Print "After Strcat, Str2 = ", Str2(), Cr '앞의 5글자만 비교 Print "Comp(Str2, Str1, 5) = ", Dec Strcomp(Str2(), Str1(), 5), Cr '------------------------------ ' 4. 부분 문자열 검색 '------------------------------ Print "Instr(Str2, Str4) = ", Dec Instr(Str2(), Str4()), Cr '------------------------------ ' 5. 왼쪽 일부 추출 '------------------------------ Left(Str5(), Str1(), 7) Print "Left(Str1, 7) = ", Str5(), Cr '------------------------------ ' 6. 오른쪽 일부 추출 '------------------------------ Right(Str5(), Str1(), 7) Print "Right(Str1, 7) = ", Str5(), Cr '------------------------------ ' 7. 중간 일부 추출 '------------------------------ Mid(Str5(), Str1(), 7, 3) Print "Mid(Str1, 7, 3) = ", Str5(), Cr '------------------------------ ' 8. Format 명령 '------------------------------ Ival = 53 Format(Str5(), 10, "%x", Ival) Print "Format(10,%x,Ival) = ", Str5(), Cr