Ruby의 문자열

빠른 색인
  • String Creation
  • Single and Double quotes

  • String Manipulation
  • Escape Characters
  • Concatenation
  • Substrings
  • Methods

  • Symbols vs Strings
  • References

  • 문자열 생성


  • 문자열 리터럴을 사용하여 문자열을 만들 수 있습니다.

  • greetings = 'hello all!'
    


  • String::new 을 사용하면 주로 문자열을 원하는 인코딩 유형과 관련하여 문자열을 만드는 데 더 많은 옵션이 있습니다.

  • greetings = String.new('hello all!', encoding: 'ASCII')
    


  • 또는 여러 줄 문자열이 필요한 경우 heredoc literal 을 사용할 수 있습니다.

  • s = <<HEREDOC
    This would contain specially formatted text.
    
    That might span many lines
    HEREDOC
    


    예를 들어 데이터베이스에 연결된 백엔드에 있는 경우 특히 SQL과 같은 코드 스니펫을 추가하는 좋은 방법입니다.

    원래 형식을 유지하고 내부에 보간을 포함할 수도 있습니다. 다음은 Ruby Guides의 두 가지 좋은 예입니다.

    type  = "healthy"
    table = "food"
    query = <<-SQL
    SELECT * FROM #{table}
    WHERE #{type} = true
    SQL
    



    doc = <<-TIME
    Current time is #{Time.now}
    TIME
    
    print doc  #=> Current time is 2022-06-07 14:51:09 +0000
    


    작은따옴표를 사용하여 보간을 비활성화할 수 있습니다.

    doc = <<-'TIME'
    Current time is #{Time.now}
    TIME
    
    print doc  #=> Current time is #{Time.now}
    


    작은따옴표(하드) 및 큰따옴표(소프트)



    Interpolation: #{ sequence }. We can place any code inside it. It is very useful.


  • 작은 따옴표 안에 보간이나 이스케이프 문자를 사용할 수 없기 때문에 작은 따옴표를 하드 따옴표라고 합니다.

  • name = 'all'
    print 'hello #{name}!'  #=> hello #{name}!
    


  • 반면에 큰따옴표는 보간을 허용하고 문자를 이스케이프하므로 소프트 따옴표라고 합니다.

  • name = 'all'
    print "hello #{name}!"  #=> hello all!
    


    ⁉️ 가독성을 위해 보간이 있을 때만 이중따옴표를 사용하는 것이 좋지만, 코드를 통해 이중따옴표만 사용하기로 결정해도 문제가 없습니다.

    문자열 조작



    이스케이프 문자



    일부 문자에는 특별한 의미가 있습니다. 예를 들어 "는 의도한 것보다 먼저 문자열을 종료할 수 있습니다. 문자열에 표시할 수 있도록 앞에 백슬래시를 추가할 수 있습니다.

    print "Double quotes: \""  #=> Double quotes: "
    


    다음은 일부 이스케이프 시퀀스 목록입니다.


    이스케이프 시퀀스



    \비
    백스페이스, ASCII 08h(BS)

    \티
    가로 탭, ASCII 09h(TAB)

    \N
    개행(줄 바꿈), ASCII 0Ah(LF)

    \V
    세로 탭, ASCII 0Bh(VT)

    \에프
    양식 공급, ASCII 0Ch(FF)

    \아르 자형
    캐리지 리턴, ASCII 0Dh(CR)

    \이자형
    이스케이프, ASCII 1Bh(ESC)

    \에스
    공백, ASCII 20h(SPC)

    \
    백슬래시,\

    \nnn
    8진수 비트 패턴, 여기서 nnn은 1-3개의 8진수([0-7])입니다.

    \xnn
    16진수 비트 패턴, 여기서 nn은 1-2자리 16진수([0-9a-fA-F])

    \unnnn
    유니코드 문자, 여기서 nnnn은 정확히 4자리 16진수([0-9a-fA-F])입니다.


    연쇄



    보간을 사용하여 문자열을 그룹화하는 것과 같은 방식으로 연결을 사용할 수 있습니다.

    print 'hello' + ' all' #=> hello all
    



    print 'hello' << ' all' #=> hello all
    



    print 'hello'.concat(' all') #=> hello all
    


    하위 문자열



    배열과 마찬가지로 인덱스에 액세스하여 하위 문자열에 액세스할 수 있습니다.

    "hello"[0]      #=> "h"
    
    "hello"[0..1]   #=> "he"
    
    "hello"[0, 4]   #=> "hell"
    
    "hello"[-1]     #=> "o"
    


    행동 양식



    문자열을 처리하는 데 도움이 되는 긴 메서드 목록이 있습니다. 주목해야 할 중요한 점은 bang으로 끝나는 일반적인 방법에서 mutationes self 및 return self 입니다.

    일반적으로 강타가 없는 메서드는 변경하지 않고 새 문자열을 반환합니다.
    capitalizecapitalize! 방법을 예로 들어 보겠습니다.

    a = "hello all!"
    a.capitalize
    
    print a #=> hello all!
    
    a.capitalize!
    
    print a #=> Hello all!
    


    모범 사례는 항상 수익에 주의를 기울이는 것입니다. replace와 같은 일부 메서드는 강타가 없지만 어느 쪽이든 self를 수정합니다.

    사용 가능한 방법을 살펴볼 수 있습니다here.

    기호 대 문자열


    symbols는 메모리에 한 번만 저장되므로 속도가 빨라집니다. 해시에 사용하기에 좋습니다.
    Strings 반면에 내용이 변경될 수 있으므로 사용할 때마다 저장해야 합니다.

    "string".object_id == "string".object_id  #=> false
    
    :symbol.object_id == :symbol.object_id    #=> true
    



    참조


  • String Ruby Documentation
  • Literals Ruby Documentation
  • String Literals
  • How to use heredoc in Ruby
  • 좋은 웹페이지 즐겨찾기