2015년 6월 17일 수요일

싸이랩(scialb)의 문자열(string)과 관련 함수

  Scilab에서 문자열은 큰따옴표 “ “ 로 묶거나 작은 따옴표 ‘ ‘ 로 묶을 수 있으며 숫자와 마찬가지로 변수에 대입할 수 있다. 큰 따옴표로 묶었다면 반드시 큰 따옴표로 끝나야 하며 작은 따옴표로 시작했다면 작은 따옴표로 마쳐야 한다.
>> x = ”Hello ” ; // 큰 따옴표 사용
>> y = ’world.’ ; // 작은 따옴표 사용
다른 프로그래밍 언어(예를 들어 C/C++/JVAV 등)의 경우에는 작은 따옴표가 하나의 문자를 표시하는데 이것과 혼동하지 말아야 한다. Scilab에는 하나의 문자를 저정하는  char형이라는 데이터형 자체가 없으며 작은 따옴표도 큰 따옴표와 똑같이 문자열을 만들 때 사용된다.
 두 문자열을 하나로 묶을 때에서는 덧셈(+) 기호를 사용할 수 있으므로 매우 직관적이고 편하게 사용할 수 있다.
>> z = x + y
ans=
   Hello world.
드물긴 하지만  만약 문자열 자체에 큰따옴표나 작은 따옴표가 포함되어 있다면 두 개를 연달아 써주면 된다. 예를 들면 다음과 같다.

>> s1 = 'He said ""Hello"".'
s1  =
     He said "Hello".
>> s2 = "She thinked ''It''s him!''"
s2  =
     She thinked 'It's him!'
 
위의 예는 문자열 자체에 큰 따옴표나 작은 따옴표가 포함된 경우이다.
 한 가지 더 언급할 것은 Scilab에서 문자열은 ‘문자의 배열’이 아니라 숫자와 마찬가지로 단일 데이터형으로 이해하는 것이 좋다. 뒤에 언급하겠지만 숫자가 1x1 행렬인 것처럼 단일 문자열도 1x1 크기의 행렬(더 정확히 표현하면 cell 이지만 편의상 행렬로 지칭하기로 하겠다.)로 취급된다.

기본적인 문자열 관련 함수

 함수 length()는 문자열의 길이를 반환해 준다.
>> length(s1)
ans  =
     16.

 

문자열은 숫자처럼 벡터나 행렬의 요소가 될 수도 있다. 이 경우 size()함수는 문자열 배열의 크기를  반환한다.


이 예에서 변수 sm은 2x3크기의 행렬인데 각각의 요소는 문자열로 채워져 있다. 문자열의 행렬이 length()함수의 입력이 되면 같은 크기의 행렬에  각각의 요소의 문자열의 크기를 반환한다. 어떤 행렬의 한 요소가 문자열이라면 다른 모든 요소도 문자열이어야 한다.
 문자열 합성 연산자 +는 단일 문자열뿐만 아니라 문자열 행렬에 대해서도 유사하게 사용된다.
>> cost = string([10 20; 100 110])
cost  =
        !10   20   !
        !100  110  !

>> scost = '$'+cost+'.00'
scost  =
        !$10.00   $20.00   !
        !$100.00  $110.00  !

이 예에서 string()함수는 숫자 행렬을 문자열 행렬로 바꿔주는 함수이다. 주의할 점은 + 연산자의 두 피연산자가 모두 문자열 행렬일 때에는 크기가 같아야 한다는 점이다. 두 피연산자 중 하나가 단일 문자열일 때는 그것이 다른 행렬의 모든 요소에 더해지게 된다. (이 점은 덧셈 연산자의 기본적인 성질에 부합된다. 스칼라과 행렬의 덧셈을 생각해 보라.)
함수 emptystr(r,c)은 rxc 크기의 빈문자열 행렬을 생성해준다.


이 함수를 이용하면 같은 문자열을 모든 요소로 가지는 문자열 행렬을 쉽게 생성할 수 있다. 예를 들어서 모든 요소가 ‘hello’라는 문자열인 5x3크기의 행렬을 생성하려면 다음과 같이 하면 된다.

>> samestr = emptystr(5,3)+'hello'
samestr  =
       !hello  hello  hello  !
       !hello  hello  hello  !
       !hello  hello  hello  !
       !hello  hello  hello  !
       !hello  hello  hello  !
  문자열의 각각의 문자를 아스키(ASCII) 값의 벡터로 바꿔주는 ascii()라는 함수가 있다.

>> ascii('01ABab')
ans  =
     48.    49.    65.    66.    97.    98.
 
이 예에서 문자 ‘0’의 아스키값은 48, 대문자 ‘A’는 65 임을 알 수 있다.
 이전 포스트에서 문자열들을 하나의 문자열로 합치는데 +연산자를 사용한다고 했는데 strcat()함수도 유사한 기능을 수행한다. 기본적으로 문자열의 벡터(행벡터 혹은 열벡터 상관없음) SM에대해서 함수 strcat(SM)은 모든 요소를 하나의 문자열로 합쳐준다. 기본적으로 첫 번째 요소는 문자열 벡터이다.
만약 문자열 사이에 어떤 문자열을 추가시키고 싶다면 두 번째 인자로 그 문자열을 주면 된다. 아래 예는 문자열 사이에 공백문자 ‘ ‘와 ‘+’를 추가시킨 것이다.



댓글 없음:

댓글 쓰기