字串與符號的差異?
字串(String):
- 字串是一種數據類型,用於表示文本數據,例如字母、數字、符號和空格。
- 字串是由一系列字符組成,這些字符可以包括字母、數字、標點符號等。
- 字串通常用引號(單引號或雙引號)括起來,例如:”Hello, World!”。
- 字串可以包含多個字符,並且可以進行各種操作,如連接、分割、查找、替換等。
Ruby string methods
- 連接(Concatenation):
- 使用
+
運算符或<<
運算符將兩個字符串連接在一起。
- 使用
1 | str1 = "Hello" |
- 分割(Split):
- 使用
split
方法來將字串根據指定的分隔符,分割成一個字串 Array。
- 使用
1 | text = "Apple, Banana, Cherry" |
查找:
- 使用
include?
方法來檢查字串是否包含特定的字。
1
2
3
4text = "Hello, World!"
if text.include?("World")
puts "包含 'World'"
end- 使用
index
方法來查找位置。
1
2
3text = "Hello, World!"
position = text.index("World")
puts "位置:#{position}" # 輸出:位置:7- 使用
替換(Replace):
- 使用
sub
或gsub
方法來替換字串中的指定字串。
1
2
3text = "Hello, World!"
new_text = text.sub("World", "Ruby")
puts new_text # 輸出:Hello, Ruby!sub
只替換第一個匹配的字串,而gsub
會替換所有匹配的字串。
1
2
3text = "Hello, World! World is great."
new_text = text.gsub("World", "Ruby")
puts new_text # 輸出:Hello, Ruby! Ruby is great.- 使用
符號(Symbol):
- 符號是一種特殊的數據類型,通常用於代表獨一無二的標識符號或常數。
- 符號通常不用引號括起來,而是直接以符號的名稱表示,例如:
:symbol_name
。
Brief Summary
String 字串,主要用於表示 Text Data Type,是可變動的,可以在運行時更改。
而 Symbol 符號主要用於表示靜態或唯一的標識符,通常用於代表程式碼中的實體或概念,並且在整個程序運行期間保持不變。符號的主要優勢之一是它們的唯一性,可以減少內存使用,因為僅能創建一次並重複使用。
- 可以透過
object_id
來觀察兩者差異:1
2
3
4
5
6
7
8
9
10
11
12
13
14str1 = "Hello"
str2 = "Hello"
sym1 = :hello
sym2 = :hello
puts "String 1 object_id: #{str1.object_id}"
puts "String 2 object_id: #{str2.object_id}"
puts "Symbol 1 object_id: #{sym1.object_id}"
puts "Symbol 2 object_id: #{sym2.object_id}"
# String 1 object_id: 60
# String 2 object_id: 80
# Symbol 1 object_id: 1194588
# Symbol 2 object_id: 1194588
可以發現 string 在每新增一次都會產生一個新的記憶位置,
而在建立同一個 symbol 時,所指向的記憶體位置都相同。