Source From Here
Preface
在 Ruby 中要表示字串,看似可以使用雙引號或單引號來包括字元序列,字串是 String 類別的實例。例如:
注意'Just"in'時,實際上相當於"Just\"in",\" 表示忽略(Escape)字元,因為"被用來作為括住字串的表示法,如果要在字串中表示",就必須寫為\",直譯器看到\會忽略下一個字元,不作為語法的一部份。另外還有一些常用的忽略字元表示:
實際上Ruby中的字串,應該都是使用雙引號括住,單引號括住的字串,實際上是讓你不用撰寫\\、\"忽略字元,就可以代表\、"的簡便方式。例如:
如上所示,如果你想顯示Just\in的結果,使用'Just\in',實際會被轉換為"Just\\in",如果你想顯示Just"in,使用'Just"in',實際會被轉換為"Just\"in",也因此,在單引號中,除了\\與\'之外,撰寫其它忽略字元都會被當作原始字串(Raw string)。
More About String:
雙引號字串中若包括 #{},則 #{} 中的內容會被當作程式解釋。例如:
被單引號括住的字串,不會對 #{} 中的內容解譯。
如果想建立的字串中,同時要含有雙引號與單引號,可以使用 %Q 或 %q 比較方便,%Q 相當於建立雙引號字串,%q 相當於建立單引號字串。%Q 與 %q 搭配 {、} 或 |、| 都可以。例如:
撰寫字串時,可以在雙或單引號中直接Enter換行,字串會自動加上\n,如果包括縮排用的空白,空白也會是最後字串的一部份。例如:
如果你想知道字串的字元長度,則可以使用 length 方法(自 Ruby 1.9.2 開始)。例如:
如果想要逐一取得字元,可以使用 each_char 方法:
或者是使用 include? 方法測試是否包括某些字串:
可以使用 + 操作來串接字串,使用 * 可以重複字串:
在強弱型別的光譜中,Ruby 比較偏強型別,型態較不能自行轉換,例如 Ruby 中,不能混合字串與數字進行+運算,你得自己使用 to_s 方法,將數字轉為字串,才可以進行字串串接:
+ 實際會產生新的字串,不過在Ruby中,字串是可變動的(Immutable),例如可使用 << 在原字串後附加字串:
如果你想知道某個字元的編碼,則可以使用 ord 方法,使用 chr 方法則可以將指定編碼轉換為字元:
字串是由字元序列所組成,如果你想要取得字串中某個字元,則可以使用 [] 指定索引,索引從 0 開始。例如:
Ruby中的索引,不僅可指定正值,還可以指定負值,實際上了解索引意義的開發人員,都知道索引其實就是相對第一個元素的偏移值,在Ruby中,正值索引就是指正偏移值,負值索引就是負偏移值,也就是 -1 索引就是倒數第一個元素,-2 索引就是倒數第二個元素.
[] 操作還可以進行切片(Slice)運算。例如:
[n..m] 是指定起始索引與結束索引,且包括結束索引,以取得子字串,[n...m] 是指定起始索引與結束索引,但不包括結束索引(實際上n..m或n...m建立了 Range 實例,之後會再說明),[n,length] 是指定起始索引與長度以取得子字串,由於可指定負值,因此 name[0, 3] 就相當於指定 name[0..2].
先前談過,Ruby 中的字串是可以變動的,你也可以使用 [] 指定索引變動字串內容:
[n..m]、[n...m] 或 [n, length] 右邊接上=,表示作取代的動作,如果指定了 [n..0]、[n...0]或[n, 0],則是技巧性地作了安插的動作。
如果想要取代字串,也可以使用 [] 時指定被取代字串。例如:
如果想要反轉字串,可以使用 reverse 方法,這會傳回新字串,內容為原字串反轉後的結果,如果使用 reverse! 方法,則會在原字串上反轉:
在 Ruby 的慣例中,如果同時提供有 name 與 name! 兩種方法,有 ! 結尾的方法代表著要注意它與無 ! 方法有所不同。例如,字串上沒 ! 的方法表示以新字串傳回結果,有 ! 的方法表示會修改原字串,像是轉大寫就有 upcase 與 upcase! 方法,轉小寫會有 downcase 與 downcase! 方法,裁剪字串前後空白的 chomp 與 chomp! 等方法。
Ruby 慣例中,有提供!的方法,就會有提供對應的無 ! 方法。例如,有 abc! 方法,慣例上就會有個 abc 方法,不會只單獨定義一個 cde! 方法,而沒有對應的 cde 方法。有經驗的Ruby程式開發人員,看到 xyz!,就會去思考它與 xyz 方法有什麼不同。
Supplement
* Ruby 手冊 - 字串
This is a blog to track what I had learned and share knowledge with all who can take advantage of them
標籤
- [ 英文學習 ]
- [ 計算機概論 ]
- [ 深入雲計算 ]
- [ 雜七雜八 ]
- [ Algorithm in Java ]
- [ Data Structures with Java ]
- [ IR Class ]
- [ Java 文章收集 ]
- [ Java 代碼範本 ]
- [ Java 套件 ]
- [ JVM 應用 ]
- [ LFD Note ]
- [ MangoDB ]
- [ Math CC ]
- [ MongoDB ]
- [ MySQL 小學堂 ]
- [ Python 考題 ]
- [ Python 常見問題 ]
- [ Python 範例代碼 ]
- [心得扎記]
- [網路教學]
- [C 常見考題]
- [C 範例代碼]
- [C/C++ 範例代碼]
- [Intro Alg]
- [Java 代碼範本]
- [Java 套件]
- [Linux 小技巧]
- [Linux 小學堂]
- [Linux 命令]
- [ML In Action]
- [ML]
- [MLP]
- [Postgres]
- [Python 學習筆記]
- [Quick Python]
- [Software Engineering]
- [The python tutorial]
- 工具收集
- 設計模式
- 資料結構
- ActiveMQ In Action
- AI
- Algorithm
- Android
- Ansible
- AWS
- Big Data 研究
- C/C++
- C++
- CCDH
- CI/CD
- Coursera
- Database
- DB
- Design Pattern
- Device Driver Programming
- Docker
- Docker 工具
- Docker Practice
- Eclipse
- English Writing
- ExtJS 3.x
- FP
- Fraud Prevention
- FreeBSD
- GCC
- Git
- Git Pro
- GNU
- Golang
- Gradle
- Groovy
- Hadoop
- Hadoop. Hadoop Ecosystem
- Java
- Java Framework
- Java UI
- JavaIDE
- JavaScript
- Jenkins
- JFreeChart
- Kaggle
- Kali/Metasploit
- Keras
- KVM
- Learn Spark
- LeetCode
- Linux
- Lucene
- Math
- ML
- ML Udemy
- Mockito
- MPI
- Nachos
- Network
- NLP
- node js
- OO
- OpenCL
- OpenMP
- OSC
- OSGi
- Pandas
- Perl
- PostgreSQL
- Py DS
- Python
- Python 自製工具
- Python Std Library
- Python tools
- QEMU
- R
- Real Python
- RIA
- RTC
- Ruby
- Ruby Packages
- Scala
- ScalaIA
- SQLAlchemy
- TensorFlow
- Tools
- UML
- Unix
- Verilog
- Vmware
- Windows 技巧
- wxPython
訂閱:
張貼留言 (Atom)
[Git 常見問題] error: The following untracked working tree files would be overwritten by merge
Source From Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 # git clean -d -fx 方案2: 今天在服务器上 gi...
-
前言 : 為什麼程序管理這麼重要呢?這是因為: * 首先,本章一開始就談到的,我們在操作系統時的各項工作其實都是經過某個 PID 來達成的 (包括你的 bash 環境), 因此,能不能進行某項工作,就與該程序的權限有關了。 * 再來,如果您的 Linux 系統是個...
-
屬性 : 系統相關 - 檔案與目錄 語法 : du [參數] [檔案] 參數 | 功能 -a | 顯示目錄中個別檔案的大小 -b | 以bytes為單位顯示 -c | 顯示個別檔案大小與總和 -D | 顯示符號鏈結的來源檔大小 -h | Hum...
-
來源自 這裡 說明 : split 是 Perl 中非常有用的函式之一,它可以將一個字串分割並將之置於陣列中。若無特別的指定,該函式亦使用 RE 與 $_ 變數 語法 : * split /PATTERN/,EXPR,LIMIT * split /...
沒有留言:
張貼留言