字串與符號的差異?
字串(String):
- 字串是一種數據類型,用於表示文本數據,例如字母、數字、符號和空格。
- 字串是由一系列字符組成,這些字符可以包括字母、數字、標點符號等。
- 字串通常用引號(單引號或雙引號)括起來,例如:”Hello, World!”。
- 字串可以包含多個字符,並且可以進行各種操作,如連接、分割、查找、替換等。
Ruby string methods
- 連接(Concatenation):- 使用 +運算符或<<運算符將兩個字符串連接在一起。
 
- 使用 
| 1 | str1 = "Hello" | 
- 分割(Split):- 使用 split方法來將字串根據指定的分隔符,分割成一個字串 Array。
 
- 使用 
| 1 | text = "Apple, Banana, Cherry" | 
- 查找: - 使用 include?方法來檢查字串是否包含特定的字。
 - 1 
 2
 3
 4- text = "Hello, World!" 
 if text.include?("World")
 puts "包含 'World'"
 end- 使用 index方法來查找位置。
 - 1 
 2
 3- text = "Hello, World!" 
 position = text.index("World")
 puts "位置:#{position}" # 輸出:位置:7
- 使用 
- 替換(Replace): - 使用 sub或gsub方法來替換字串中的指定字串。
 - 1 
 2
 3- text = "Hello, World!" 
 new_text = text.sub("World", "Ruby")
 puts new_text # 輸出:Hello, Ruby!- sub只替換第一個匹配的字串,而- gsub會替換所有匹配的字串。
 - 1 
 2
 3- text = "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 時,所指向的記憶體位置都相同。