English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Ruby 문자열(String)

Ruby의 String 객체는 하나나 여러 바이트의 시퀀스를 저장하거나 처리하는 데 사용됩니다.

Ruby 문자열은 단일 지문 문자열(')과 중대지문 문자열(")로 나뉩니다. 차이점은 중대지문 문자열이 더 많은 인식 가능한 이스케이프 문자를 지원한다는 것입니다.

단일 지문 문자열

가장 간단한 문자열은 단일 지문 문자열입니다. 즉, 단일 지문内存放着字符串:

'이것은 Ruby 프로그램의 문자열입니다'

단일 지문 문자열에서 단일 지문 문자를 사용하려면, 단일 지문 문자열에서 백슬래시(\)를 사용해야 합니다. 이렇게 하면 Ruby 인터프리터는 이 단일 지문 문자를 문자열의 종료 기호로 인식하지 않습니다:

'Won\'t you read O\'Reilly\'s book?'

백슬래시는 또 다른 백슬래시를 인식할 수 있습니다. 따라서 두 번째 백슬래시는 인식되지 않습니다.

아래는 Ruby에서 문자열과 관련된 특성입니다。

중대지문 문자열

중대지문 문자열에서 사용할 수 있습니다 #{} 아이콘和大括호를 사용하여 표현식의 값을 계산합니다:

문자열에 변수를 내장합니다:

온라인 예제

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
 
name1 = "Joe"
name2 = "Mary"
puts "안녕하세요 #{name1}, #{name2}" 어디에 계신가요"

위의 예제의 출력 결과는 다음과 같습니다:

안녕하세요 Joe, Mary는 어디에 계신가요?

문자열에서 수학 연산을 수행합니다:

온라인 예제

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
 
x, y, z = 12, 36, 72
puts "x의值为 #{(x"
puts "x + y의 값은 #{(x + y"
puts "x + y + z의 평균은 #{(x + y + z)/3 "}

위의 예제의 출력 결과는 다음과 같습니다:

x의 값은 12
x + y의 값은 48
x + y + z의 평균 값은 40

Ruby는 %q와 %Q을 사용하여 문자열 변수를 지원합니다. %q은 단따옴표 참조 규칙을 사용하며, %Q은 쌍따옴표 참조 규칙을 사용합니다. 그 뒤에는 (! [ { 등의 시작 구분 기호와 } ] ) 등의 종료 구분 기호가 따라옵니다.

q나 Q 뒤에 따라오는 문자는 구분자입니다. 구분자는 어떤 비알파벳 문자인지에 따라 다릅니다. 예를 들어, [,{,(,<,! 등, 문자열은 해당 구분자와 일치하는 종료 기호를 발견할 때까지 읽어집니다.

온라인 예제

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
 
desc1 = %Q{Ruby의 문자열은 ''와 ""를 사용할 수 있습니다}.
desc2 = %q|Ruby의 문자열은 ''와 ""를 사용할 수 있습니다.|
 
puts desc1
puts desc2

위의 예제의 출력 결과는 다음과 같습니다:

Ruby의 문자열은 ''와 ""를 사용할 수 있습니다.
Ruby의 문자열은 ''와 ""를 사용할 수 있습니다.

이스케이프 문자

아래의 인덱스는 반취소 기호로 변환할 수 있는 이스케이프 문자 또는 비출력 문자를 나열합니다.

주의:쌍따옴표로 감싸인 문자열 내에서는 이스케이프 문자가 해석됩니다. 단따옴표로 감싸인 문자열 내에서는 이스케이프 문자가 해석되지 않으며, 원본으로 출력됩니다.

반취소 기호16진수 문자설명
\a0x07알림 문자
\b0x08백스페이스 키
\cx 제어-x
\C-x 제어-x
\e0x1b이스케이프 문자
\f0x0c이동 문자
\M-\C-x 메타-제어-x
\n0x0a줄 바꿈 문자
\nnn 8진수 표기법, n의 범위는 0에서7
\r0x0d리턴 문자
\s0x20공백 문자
\t0x09
\v0x0b가로 탭
\x 문자 x
\xnn 16진수 표기법, n의 범위는 0에서9、a.f 또는 A.F

字符编码

Ruby의 기본 문자셋은 ASCII로, 문자는 단일 바이트로 표현됩니다. UTF를 사용하면-8 또는 다른 현대적인 문자셋, 문자는 1개에서 4개의 바이트로 표현될 수 있습니다.

프로그램의 시작 부분에서 $KCODE를 사용하여 문자셋을 변경할 수 있습니다. 다음과 같이 사용할 수 있습니다:

$KCODE='u'

다음은 $KCODE의 가능한 값입니다。

编码설명
aASCII(None와 동일합니다). 기본 설정입니다.
eEUC.
NNone(ASCII와 동일합니다).
uUTF-8

문자열 내장 메서드

String 메서드를 호출하기 위해 String 객체의 예제가 필요합니다. String 객체를 생성하는 방법은 다음과 같습니다:

new[String.new(str="")]

이는 포함된 str 복사본의 새 문자열 객체입니다. 지금, 사용 str 객체를 호출할 수 있는 모든 사용 가능한 예제 메서드를 호출할 수 있습니다. 예를 들어:

온라인 예제

#!/usr/bin/ruby
 
myStr = String.new("THIS IS TEST")
foo = myStr.downcase
 
puts "#{foo}"

이렇게 됩니다:

this is test

다음은 공공 문자열 메서드입니다(str이 String 객체라고 가정합니다):

순번메서드 & 설명
1str % arg
포맷 규약을 사용하여 문자열을 형식화합니다. arg이 하나 이상의 대체를 포함하면, arg은 배열이어야 합니다. 포맷 규약에 대한更多信息은 "커널 모듈" 아래의 sprintf를 참조하세요.
2str * integer
integer 개의 str을 포함하는 새로운 문자열을 반환합니다. 다시 말해, str이 integer 번 반복됩니다.
3str + other_str
other_str를 str에 연결합니다.
4str << obj
객체를 문자열에 연결합니다. 객체가 0.255 끝나는 Fixnum 사이의 고정 수치로 변환되면, 문자로 변환되고 concat과 비교됩니다.
5str <=> other_str
str과 other_str를 비교하여 반환 -1(작다)、0(동일) 또는 1(빛보다 크다)。비교는 대소문자를 구분합니다.
6str == obj
str과 obj의 일치성을 확인합니다. obj가 문자열이 아니면 false를 반환하고, str와 동일하면 true를 반환합니다.
7str =~ obj
정규 표현식 패턴 obj로 str을 일치시킵니다. 일치하는 경우 반환 위치를, 일치하지 않으면 false를 반환합니다.
8str[position] # 반환된 것은 ASCII 코드가 아닌 문자입니다
str[start, length]
str[start..end]
str[start...end]

인덱스를 사용하여 부분 문자열을 추출합니다.
9str.capitalize
문자열을 대문자로 변환하여 표시합니다.
10str.capitalize!
capitalize과 동일하지만, str이 변경되고 반환됩니다.
11str.casecmp
대소문자를 구분하지 않는 문자열 비교.
12str.center
문자열을 중앙에 정렬합니다.
13str.chomp
문자열의 끝에서 기록 구분자를 제거합니다($)/보통 \n입니다. 기록 구분자가 없으면 어떤 작업도 수행하지 않습니다.
14str.chomp!
str와 동일하지만, str이 변경되고 반환됩니다.
15str.chop
str에서 마지막 문자를 제거합니다.
16str.chop!
chop과 같지만, str이 변경되고 반환됩니다.
17str.concat(other_str)
other_str를 str에 연결합니다.
18str.count(str, ...)
한 개나 여러 개의 문자 집합에 대한 카운트를 제공합니다. 여러 문자 집합이 있으면, 이러한 집합의 교집합에 대한 카운트를 제공합니다.
19str.crypt(other_str)
str에 일방적 암호화 해시를 적용합니다. 매개변수는 두 글자 길이의 문자열이며, 각 글자는 a.z, A.Z, 0.9、 . 또는 /
20str.delete(other_str, ...)
str의 복사본을 반환하고, 매개변수의 교집합에 있는 모든 문자를 제거합니다.
21str.delete!(other_str, ...)
delete와 같지만, str이 변경되고 반환됩니다.
22str.downcase
str의 복사본을 반환하고, 모든 대문자를 소문자로 대체합니다.
23str.downcase!
downcase와 같지만, str이 변경되고 반환됩니다.
24str.dump
str의 모든 비출력 문자를 \nnn 기호로 대체하고, 모든 특수 문자를 escape합니다.
25str.each(separator=$/) { |substr| block }
구분자로 사용할 매개변수(기본적으로 $)/str을 구분자로 분리하고, 각 서브스트링을 제공된 블록에 전달합니다.
26str.each_byte { |fixnum| block }
str의 각 바이트를 block에 전달하고, 각 바이트를 십진수로 반환합니다.
27str.each_line(separator=$/) { |substr| block }
구분자로 사용할 매개변수(기본적으로 $)/str을 구분자로 분리하고, 각 서브스트링을 제공된 block에 전달합니다.
28str.empty?
str가 비어 있으면(즉, 길이가 0이면) true를 반환합니다.
29str.eql?(other)
두 문자열이 같은 길이와 내용을 가지면, 이 두 문자열은 같습니다.
30str.gsub(pattern, replacement) [or]
str.gsub(pattern) { |match| block }

str의 복사본을 반환하고, pattern의 모든 발견된 부분을 replacement 또는 block의 값으로 대체합니다. pattern은 일반적으로 정규 표현식 Regexp입니다; 문자열 String이면 정규 표현식 원자 문자는 해석되지 않습니다(즉,/\d/ 숫자를 매칭하지만 '\d'은反斜杠 뒤에 'd'을 매칭합니다).
31str[fixnum] [또는] str[fixnum,fixnum] [또는] str[range] [또는] str[regexp] [또는] str[regexp, fixnum] [또는] str[other_str]
다음과 같은 매개변수로 str을 참조합니다: 매개변수가 Fixnum이면, fixnum의 문자编码을 반환합니다; 매개변수가 두 개의 Fixnum이면, offset(첫 번째 fixnum)에서 시작하여 길이(두 번째 fixnum)까지의 부분 문자열을 반환합니다; 매개변수가 range이면, 해당 범위의 부분 문자열을 반환합니다; 매개변수가 regexp이면, 문자열의 일부를 반환합니다; 매개변수가 fixnum을 포함한 regexp이면, fixnum 위치의 매칭 데이터를 반환합니다; 매개변수가 other_str이면, other_str과 일치하는 부분 문자열을 반환합니다. 음수의 Fixnum은 문자열의 끝에서부터 시작합니다 -1 시작합니다.
32str[fixnum] = fixnum [또는] str[fixnum] = new_str [또는] str[fixnum, fixnum] = new_str [또는] str[range] = aString [또는] str[regexp] =new_str [또는] str[regexp, fixnum] =new_str [또는] str[other_str] = new_str ]
전체 문자열 또는 일부 문자열을 대체합니다. slice!과 동의어입니다.
33str.gsub!(pattern, replacement) [또는] str.gsub!(pattern) { |match| block }
String#gsub의 대체를 수행하고, 대체가 수행되지 않았으면 nil을 반환합니다.
34str.hash
문자열의 길이와 내용을 기반으로 한 해시를 반환합니다.
35str.hex
str의 선두 문자를 16진수 숫자 문자열로 간주하고(선택 가능한 기호와 선택 가능한 0x), 해당 숫자를 반환합니다. 오류가 발생하면 0을 반환합니다.
36str.include? other_str [또는] str.include? fixnum
str이 주어진 문자열이나 문자를 포함하고 있는지 확인하고, 포함하고 있으면 true를 반환합니다.
37str.index(substring [, offset]) [or]
str.index(fixnum [, offset]) [or]
str.index(regexp [, offset])

주어진 부분 문자열, 문자(fixnum) 또는 패턴(regexp)이 str에서 처음으로 나타나는 인덱스를 반환합니다. 찾지 못하면 nil을 반환합니다. 두 번째 매개변수가 제공되면 문자열에서 검색을 시작하는 위치를 지정합니다.
38str.insert(index, other_str)
지정된 인덱스의 문자 앞에 other_str을 삽입하여 str을 수정합니다. 부정 인덱스는 문자열의 끝에서부터 시작합니다. 주어진 인덱스에서 문자열을 시작하는 의도로 삽입됩니다.
39str.inspect
str의 인쇄 가능한 버전을 반환합니다. 특수 문자는 이스케이프됩니다.
40str.intern [or] str.to_sym
str에对应的符号进行返回,如果之前不存在,则创建符号。
41str.length
str의 길이를 반환합니다. 이를 size와 비교합니다.
42str.ljust(integer, padstr=' ')
integer가 str의 길이보다 크면, integer 길이의 새 문자열을 반환합니다. 새 문자열은 str을 왼쪽 정렬하고 padstr로 채웁니다. 그렇지 않으면 str을 반환합니다.
43str.lstrip
str의 복사본을 반환하여 선두 공백을 제거합니다.
44str.lstrip!
str에서 선두 공백을 제거합니다. 변경이 없으면 nil을 반환합니다.
45str.match(pattern)
pattern이 정규 표현식이 아니면, pattern을 정규 표현식 Regexp로 변환한 후 str에 대한 매치 메서드를 호출합니다.
46str.oct
str의 선두 문자를 십진수 문자열로 변환하여(선택 가능한 기호를 포함), 상응하는 숫자를 반환합니다. 변환 실패 시 0을 반환합니다.
47str.replace(other_str)
str에 있는 내용을 other_str에 있는 상응하는 값으로 대체합니다.
48str.reverse
새 문자열을 반환합니다. 이 새 문자열은 str의 역순입니다.
49str.reverse!
문자열을 거꾸로 돌려, 문자열이 변경되고 반환됩니다.
50str.rindex(substring [, fixnum]) [or]
str.rindex(fixnum [, fixnum]) [or]
str.rindex(regexp [, fixnum])

str에서 주어진 서브 문자열, 문자(fixnum) 또는 패턴(regexp)의 마지막 출현 인덱스를 반환합니다. 찾지 못하면 nil을 반환합니다. 두 번째 매개변수가 제공되면, 문자열에서 검색을 종료할 위치를 지정합니다. 이 위치 이후의 문자는 고려되지 않습니다.
51str.rjust(integer, padstr=' ')
integer가 str의 길이보다 크면, integer 길이의 새 문자열을 반환하고, 새 문자열은 str의 오른쪽 정렬로 되어 있으며, padstr로 채워집니다. 그렇지 않으면 str를 반환합니다.
52str.rstrip
str의 복사본을 반환하고, 끝자리 공백을 제거합니다.
53str.rstrip!
str에서 끝자리 공백을 제거하고, 변화가 없으면 nil을 반환합니다.
54str.scan(pattern) [또는]
str.scan(pattern) { |match, ...| block }

pattern(정규 표현식 Regexp 또는 문자열 String)과 일치하는 두 가지 형식이 str를 탐색합니다. 매칭의 경우마다 결과가 생성되고, 결과 배열에 추가되거나 block에 전달됩니다. pattern이 그룹을 포함하지 않으면, 각 독립된 결과는 매칭된 문자열과 $&로 구성됩니다. 그룹을 포함하면, 각 독립된 결과는 각 그룹 입력을 포함하는 배열입니다.
55str.slice(fixnum) [또는] str.slice(fixnum, fixnum) [또는]
str.slice(range) [또는] str.slice(regexp) [또는]
str.slice(regexp, fixnum) [또는] str.slice(other_str)
str[fixnum] 등을 참조하세요.
str.slice!(fixnum) [또는] str.slice!(fixnum, fixnum) [또는] str.slice!(range) [또는] str.slice!(regexp) [또는] str.slice!(other_str)

지정된 부분을 str에서 제거하고 반환합니다. 값이 범위를 벗어나면, Fixnum 형식의 매개변수가 포함된 경우 IndexError가 생성됩니다. range 형식의 매개변수가 포함된 경우 RangeError가 생성됩니다. Regexp와 String 형식의 매개변수가 포함된 경우 실행 동작을 무시합니다.
56str.split(pattern=$;, [limit])

분할 기준으로 str을 서브스트링으로 분할하고, 이 서브스트링의 배열을 반환합니다.

만약 pattern 이 문자열 String이면, str을 분할할 때 사용됩니다. pattern이 단일 공백이면, str은 공백을 기준으로 분할되며, 앞쪽 공백과 연속된 공백 문자는 무시됩니다.

만약 pattern  이 정규 표현식 Regexp이면, str이 pattern과 일치하는 부분에서 분할됩니다. pattern이 단일 길이의 문자열과 일치하면, str은 단일 문자로 분할됩니다.

생략된 경우 pattern 매개변수는 $;의 값으로 사용됩니다. $;이 nil이면(기본적으로), str은 공백을 기준으로 분할되며, ` `로 설정된 것과 같습니다.

생략된 경우 limit 매개변수를 억제합니다. limit이 양수이면, 최대로 반환할 필드 수는 이 값으로 제한됩니다. limit이 1만약 limit이 음수이면, 반환되는 필드 수는 제한이 없으며, null 필드는 억제되지 않습니다.

57str.squeeze([other_str*)
other_str 매개변수를 사용하여 문자열의 일련의 문자를 생성합니다. 반복되는 문자가 있는 문자열을 단일 문자로 대체한 새로운 문자열을 반환합니다. 매개변수가 제공되지 않으면 모든 반복되는 문자가 단일 문자로 대체됩니다.
58str.squeeze!([other_str]*)
squeeze와 같지만, str이 변경되고 반환되며, 변경이 없으면 nil을 반환합니다.
59str.strip
반환된 str 복제본에서 앞쪽의 공백과 뒤쪽의 공백을 제거합니다.
60str.strip!
앞쪽의 공백과 뒤쪽의 공백을 제거한 str을 반환합니다. 변화가 없으면 nil을 반환합니다.
61str.sub(pattern, replacement) [or]
str.sub(pattern) { |match| block }

반환된 str 복제본에서 pattern의 첫 번째 발견되는 부분이 replacement 또는 block의 값으로 대체됩니다. pattern은 일반적으로 정규 표현식 Regexp입니다; 문자열 String이면 정규 표현식 메타 문자는 해석되지 않습니다.
62str.sub!(pattern, replacement) [or]
str.sub!(pattern) { |match| block }

String#sub를 대체하고, str을 반환합니다. 대체가 수행되지 않으면 nil을 반환합니다.
63str.succ [or] str.next
str의 상속을 반환합니다.
64str.succ! [or] str.next!
String#succ와 동일하지만, str이 변경되어 반환됩니다.
65str.sum(n=16)
str의 문자의 n-bit 해시 함수입니다. n은 선택적인 Fixnum 파라미터로, 기본值为 16결과는 각 문자의 이진 값을 합한 것으로, 2N - 1 모드입니다. 이는 특별히 좋은 해시 함수가 아닙니다.
66str.swapcase
str의 복사본을 반환하고, 모든 대문자를 소문자로, 모든 소문자를 대문자로 변환합니다.
67str.swapcase!
String#swapcase와 동일하지만, str이 변경되어 반환되고, 변경되지 않으면 nil을 반환합니다.
68str.to_f
str에서 앞부분 문자를 부호 정수로 해석한 결과를 반환합니다. 유효한 숫자의 끝에 있는 불필요한 문자가 무시됩니다. str의 시작 부분에 유효한 숫자가 없으면 0.0을 반환합니다. 이 메서드는 예외를 생성하지 않습니다.
69str.to_i(base=10)
str에서 앞부분 문자를 정수 기본수(기본수는 2및 8및 10 또는 16결과는 유효한 숫자의 끝에 있는 불필요한 문자가 무시됩니다. str의 시작 부분에 유효한 숫자가 없으면 0을 반환합니다. 이 메서드는 예외를 생성하지 않습니다.
70str.to_s [or] str.to_str
받은 값을 반환합니다.
71str.tr(from_str, to_str)
str의 복사본을 반환하고, from_str에 있는 문자를 to_str에 있는 대응하는 문자로 대체합니다. to_str이 from_str보다 짧으면, 마지막 문자로 채웁니다. 두 문자열 모두 c를 사용할 수 있습니다.1.c2 문자의 범위를 나타냅니다. from_str이 ^로 시작하면, 나열된 문자를 제외한 모든 문자를 의미합니다.
72str.tr!(from_str, to_str)
String#tr와 동일하지만, str이 변경되어 반환되고, 변경되지 않으면 nil을 반환합니다.
73str.tr_s(from_str, to_str)
str을 String#tr로 설명된 규칙에 따라 처리한 후, 번역에 영향을 미치는 중복 문자를 제거합니다.
74str.tr_s!(from_str, to_str)
String#tr_s와 동일하지만, str이 변경되면 반환하고 변경되지 않으면 nil을 반환합니다.
75str.unpack(format)
format 문자열에 따라 str(이진 데이터를 포함할 수 있음)을 디코딩하여, 추출된 각 값을 포함한 배열을 반환합니다. format 문자는 일련의 단일 문자 지시로 구성됩니다. 각 지시 뒤에는 숫자가 추가될 수 있으며, 이는 해당 지시를 반복할 횟수를 나타냅니다. 별표(*)*모든 남은 요소를 사용합니다. 지시 sSiIlL은 각 후에 하이픈(_)이 추가될 수 있으며, 지정된 타입에 대해 하부 플랫폼의 로컬 크기를 사용하거나, 플랫폼에 독립적으로 일관된 크기를 사용합니다. format 문자열의 공백은 무시됩니다.
76str.upcase
str의 복사본을 반환하며, 모든 소문자는 대문자로 대체됩니다. 작업은 환경에 대한 반응이 없으며, 문자 a부터 z에 영향을 미칩니다.
77str.upcase!
str의 내용을 대문자로 변경합니다. 변경되지 않으면 nil을 반환합니다.
78str.upto(other_str) { |s| block }
연속 값을 순회하며, str에서 시작하여 other_str로 끝나며(포함), 각 값을 block에 번갈이 전달합니다. String#succ 메서드를 사용하여 각 값을 생성합니다.

문자열 unpack 지시

아래 표는 String#unpack 메서드의 解压 지시를 나열합니다.

지시반환설명
AString끝나는 null과 공백을 제거합니다.
aString문자열.
BString각 문자에서 비트를 추출합니다. (최초에는 가장 높은 효과적인 비트부터).
bString각 문자에서 비트를 추출합니다. (최초에는 가장 낮은 효과적인 비트부터).
CFixnum한 문자를 무符号 정수로 추출합니다.
cFixnum한 문자를 정수로 추출합니다.
D, dFloatsizeof(double) 길이의 문자를 원시 double로 간주합니다.
EFloatsizeof(double) 길이의 문자를 littleendian 바이트 순서의 double로 간주합니다.
eFloatsizeof(float) 길이의 문자를 littleendian 바이트 순서의 float로 간주합니다.
F, fFloatsizeof(float) 길이의 문자를 원시 float로 간주합니다.
GFloatsizeof(double) 길이의 문자를 network 바이트 순서의 double로 간주합니다.
gFloatsizeof(float) 길이의 문자를 network 바이트 순서의 float로 간주합니다.
HString从每个字符中提取十六进制(首先是最高有效位)。
hString각 문자에서 16진수를 추출합니다(먼저 가장 높은 효과적인 비트부터).
hInteger각 문자에서 16진수를 추출합니다(먼저 가장 낮은 효과적인 비트부터).
IIntegersizeof(int) 길이( _를 통해 수정)의 연속 문자를 native integer로 간주합니다.
iIntegersizeof(int) 길이( _를 통해 수정)의 연속 문자를 signed native integer로 간주합니다.
LInteger네 ( _를 통해 수정된) 연속 문자를 unsigned native long integer로 간주합니다.
lString네 ( _를 통해 수정된) 연속 문자를 signed native long integer로 간주합니다.
MString출력 가능한 문자를 참조합니다.64 m
BaseInteger인코딩.
NFixnum네 문자를 network 바이트 순서의 unsigned long으로 간주합니다.
nString) 길이의 문자를 포인터로 간주하고, 참조 위치에서 \emph{len} 문자를 반환합니다. *두 문자를 network 바이트 순서의 unsigned short로 간주합니다.
PString) 길이의 문자를 포인터로 간주하고, 참조 위치에서 \emph{len} 문자를 반환합니다. *sizeof(char)
) 길이의 문자를 null 문자로 끝나는 포인터로 간주합니다.Integer여덟 문자를 unsigned quad word로 간주합니다.64 비트)。
qInteger여덟 문자를 signed quad word로 간주합니다.64 비트)。
SFixnum두 (만약 _를 사용하면 다르다) 연속 문자를 native 바이트 순서의 unsigned short로 간주합니다.
sFixnum두 (만약 _를 사용하면 다르다) 연속 문자를 native 바이트 순서의 signed short로 간주합니다.
UIntegerUTF-8 캐릭터를 unsigned integer로 간주합니다.
uStringUU 인코딩.
VFixnum네 문자를 little-endian 바이트 순서의 unsigned long.
vFixnum두 문자를 little-endian 바이트 순서의 unsigned short.
wIntegerBER 압축된 정수.
X 한 문자를 뒤로 넘어갑니다.
x 한 문자를 넘어갑니다.
ZString와 * 함께 사용하여 마지막 null까지 null을 제거합니다.
@ length 매개변수로 지정된 오프셋을 건너뛰세요.

온라인 예제

시도하려면 다음 예제를 해제하여 다양한 데이터를 풀어보세요.

"abc \0\0abc \0\0".unpack('A6Z6')     #=> ["abc", "abc "]
"abc \0\0".unpack('a3a3')     #=> ["abc", "  \000\000"]
"abc \0abc \0".unpack('Z')*Z*
"aa".unpack('b')8B810000110", "01100001"]
"aaa".unpack('h')2H2c') => ['"']16", "61" 97]
"\xfe\xff\xfe\xff".unpack('sS') => [-2, 65534]
"now="20is".unpack('M')*
"whole".unpack('xax') => ['now is']2aX2aX1aX2a') => ['h', 'e', 'l', 'l', 'o']