본문 바로가기
기타/멋쟁이사자처럼

[ruby] 루비 기초편 - String

by jinbro 2017. 2. 12.

[String이란]

문자열(s,t,r과 같은 문자의 배열)을 저장하기위한 데이터타입 


[String 선언]

루비에서는 앞서 포스팅한 것처럼 데이터타입을 선언하지않고 데이터를 변수명에 집어넣으면 선언 완성!

str = "문자열"


[String 관련 메서드]

String을 활용하여 어떤 기능을 사용할 수 있는지 살펴볼 것이다.


기본값 : str = "Hello" 

#는 주석처리이므로 메서드(코드)와는 아무런 상관없음, 주석 처리된 부분부터는 코드에 아무런 영향을 미치지 않음(#의 주석처리는 그 행만)


1) str * 3  #=> HelloHelloHello

2) str << " World" #=> Hello World

3) str.concat("World") #=> Hello World

4) str <=> "Hello" #=> str과 Hello가 같으므로 0을 리턴함, str과 비교하는 값이 "Hell" 이나 "hell" 일 경우 1을 리턴(포함되는 문자), "hellf"일 경우 완전 다르므로 -1 리턴 / 문자열 값을 비교 : 동일할 때 - 0 , 포함할 때 1, 완전히 다른 값일 때 -1 리턴함

5) str == "hello" #=> false 리턴, 값이 같을 때 true 리턴 / 다를 때는 false 리턴

6) str[0] #=> H 리턴, 0자리는 문자열의 index 자리로 문자열이 문자의 배열이기때문에 index값으로 각 자리값을 얻어낼 수 있음 

7) str[0, 2] #=> He 리턴, 0은 시작 index이며, 2는 2번째 전까지를 리턴하겠다는 뜻임

8) str[0..3] #=> Hell 리턴, 7번과는 달리 문자열에서 0~3번째 요소를 리턴함

8) str["bye"] #=> false 리턴, 괄호 안에 들어가는 문자열을 str이 포함하느냐를 포함하지 않느냐를 따지는 것

9) str.capitalize #=> Hello 리턴, 가장 첫머리 문자를 대문자화하는 메서드

10) str.capitalize! #=> nil(비었다는 뜻, 아무것도 없다는 뜻) 리턴, 9번과 같이 변경을 하는데 9번과 차이점은 !(느낌표)가 붙었다는 것이다. 루비에서 메서드 뒤에 !가 붙었다는 것은 메서드 작업 후 해당 객체(문자열 str)에 변경사항을 바로 저장하겠다는 것이다. 그러나 str은 이미 Hell

o 라 아무런 변경이 없다. 아무런 변경이 없을 경우 nil을 리턴하며, 변경될 경우 변경된 값을 리턴함(저장까지됨)

11) str.casecmp("문자열") #=> 4번과 같은 역할을 하는 메서드, 동일한 경우 : 0 / 포함되는 경우 : 1 / 다른 경우 : -1 

12) str.chr #=> H 리턴, 문자열의 맨 앞자리를 리턴함

13) str.clear #=> "" (빈 문자열)리턴, 변수에 저장되어있던 문자열을 빈문자열로 바꿈(nil과는 다름, nil은 아예 없고, 참조하는 값이 없다는 뜻)

14) str.count "abcd" #=> 0을 리턴, 'a', 'b', 'c', 'd' 중에 문자열에 아무런 값이 포함되지 않기 때문에 0을 리턴

15) str.delete "Ho" #=> ell 리턴, 문자열에서 'H', 'o' 를 삭제함

16) str.delete! "Ho" #=> 'H', 'o'를 삭제한 뒤 나온 "ell"을 str에 저장함, 15번과의 차이점은 !가 달려있어서 변경 후 변경 전 변수에 저장한 것

17) str.downcase, str.downcase! #=> hello 리턴, 문자열을 모두 소문자화 함

18) str.upcase, str.upcase! #=> HELLO 리턴, 문자열을 모두 대문자화 함

19) str.empty? #=> false 리턴, 문자열이 빈 문자열인지 아닌지를 판별하는 메서드(nil과는 전혀 다름)

20) str.include? "Ho" #=> false 리턴, include 메서드의 파라미터로 전달되는 문자열("Ho")가 해당 문자열에 포함되는지 판별하는 메서드

21) str.index("el") #=> 1 리턴, index의 파라미터로 전달되는 문자열이 해당 문자열에서 몇번째부터 시작되는지 리턴받는 메서드, 파라미터로 전달되는 값이 해당 문자열에 없을 경우 nil 을 리턴함

22) str.replace("world") #=> world 리턴, 해당 문자열을 파라미터로 전달되는 문자열로 바꾸는 메서드

23) str.insert(0, '!') #=> !world 리턴, 문자열의 특정 index(0에 해당)에 파라미터로 전달되는 문자('!'에 해당)를 추가하는 메서드

24) str.insert(-1, '!') #=> world! 리턴, 23번과의 차이는 index의 차이인데, -(마이너스)가 붙을 경우 뒤부터 문자열 index를 센 것

25) str.inspect[1] #=> H 리턴, 문자열의 특정 값을 리턴받는 메서드

26) str.length #=> 5 리턴, 문자열의 길이를 리턴받는 메서드

27) str.ljust(20, "1234") #=> Hello123412341234123 리턴, 해당 문자열을 정해진 길이(20에 해당)로 만들기위해 특정 문자열(1234)를 붙이는 메서드

28) str.lstrip #=> Hello 리턴, 해당 문자열의 시작과 끝에 있는 빈 공간(whitespace)를 제거해주는 메서드

29) str.partition("l") #=> ["He", "l", "lo"] 리턴, 파라미터로 전달되는 문자열("l")을 기준으로 파티션을 나누는 것, 저장되는 형태는 배열

30) str.prepend("world ") #=> world Hello 리턴, 해당 문자열 앞에 파라미터로 전달되는("world")를 붙임

31) str.reverse #=> olleH 리턴, 해당 문자열을 거꾸로 뒤집어서 리턴하는 메서드

32) str.slice(2) #=> l 리턴, 메서드의 파라미터로 전달한 index값(2에 해당)에 해당되는 문자열의 요소값을 리턴함

33) str.split('l') #=> ["He", "", "o"] 리턴, 해당 메서드의 파라미터 값('l')으로 전달되는 문자를 가지고 해당 문자열에서 찾고 빈문자로 바꾼 후 나머지는 각각 배열 요소로 저장함, 29번과의 공통점은 해당 문자로 문자열을 각각 나눠 배열 요소로 저장하지만 split은 해당 문자를 빈문자로 변경함

34) str.strip #=> Hello 리턴, 해당 문자열의 앞 뒤로 있는 빈 공간(whitespace)를 제거해주는 메서드, 28번과 동일

35) str.sub("l", "e") #=> Heelo 리턴, 해당 문자열에서 파라미터 중 첫번째 값("l" 해당)에 해당되는 값 중 첫번째 값을 파라미터 두번째("e"에 해당)의 값으로 변경시켜주는 것

36) str.swapcase #=> hELLO 리턴, 해당 문자열에서 대문자는 소문자로, 소문자는 대문자로 변경해주는 메서드

37) str이 "1234" 일 때, str.to_i #=> 1234 리턴(문자열이 아닌 정수형타입으로 리턴), 해당 문자열을 정수형 타입으로 바꿔주는 메서드

38) str이 "12.34" 일 때, str.to_f #=> 1234 리턴(문자열이 아닌 소수점타입으로 리턴), 해당 문자열을 소수점 타입으로 바꿔주는 메서드

39) 반대로 변수가 1234 일 때 1234.to_s #=> "1234" 리턴, 해당 정수형(어떤 타입이든)타입을 문자열 타입으로 바꿔주는 메서드


[참고자료]

루비 공식 API : http://ruby-doc.org/core-2.2.0/String.html



31) str.append("world")  #=> Hello world 리턴, 해당 문자열 뒤에 파라미터로 전달되는("world")를 붙임



댓글