Ruby中是如何處理字符串的?



  1. #定义字符串  
  2. "abc"  
  3.   
  4. 'efg'  
  5.   
  6.  %Q{abc} #等价于 ""  
  7.   
  8.  %{hahaha} #等价于 ""  
  9.   
  10.  %q!efg! #等价于 ''  
  11.   
  12.  %!hello! #等价于 ''  


Q:"" 和'' 两者之间的区别? 
A:"" 中可以嵌入#{}输出表达式的值,或者是character escapes 


  1. str = "abc"  
  2.   
  3. puts "this is #{str}" # this is abc  
  4.   
  5. puts 'this is #{str}' # this is #{str}  
  6.   
  7. puts "abc\nedf" # abc  
  8.                 # edf  
  9.   
  10. puts 'abc\nefg' # abc\nefg  


Q:ruby中字符编码? 
Q:在ruby中puts "中國" 出现"invalid multitype char<us-ASCII>" 
A:ruby中的source code 默認的編碼是US-ACSII,不能解析中文。需要把源文件的編碼改為“適合”的方式,繁體是 

  1. #encoding: Big5  



  1. #new  
  2. my_name = "tony"  
  3.   
  4. your_name = String.new(my_name)  
  5.   
  6. puts my_name.object_id #5907780  
  7.   
  8. puts your_name.object_id #5907768  
  9.   
  10. your_name[0] = "m"  
  11.   
  12. puts my_name # tony  
  13.   
  14. puts your_name # mony  


  1. #String.try_convert  
  2.   
  3. puts "try_convert"  
  4.   
  5. puts String.try_convert("aBC"#aBC  
  6.   
  7. puts String.try_convert(12345) #nil  
  8.   
  9. puts String.try_convert("12345"#12345  


  1. # % format string  
  2. puts "%"  
  3. puts "str % arg -> string"  
  4.   
  5. puts "%05d" % 123 #00123 formatstring = "%flag with precision name fieldtype"  
  6.   
  7. puts "%0b" % 123 #1111011   
  8.   
  9. puts "%5s: %08x" % ["ID"self.object_id] #   ID: 005af846  
  10.   
  11. puts "%-5s: %08X" % ["ID"self.object_id] #ID   : 005AF846  
  12.   
  13. puts "%-5<name>s : %08<value>X" % {name: "hash_id", value: self.object_id} #hash_id: 005AF86  


  1. # * copies  
  2. # + concatenation   
  3. # << append  if the object is a Fixnum it is considered to be a codepoint in the encoding  
  4. #    of str and converted to the appropriate character before being appended  
  5. # concat  
  6.   
  7. puts "Ha" * 3 #HaHaHa  
  8.   
  9. puts "Ha" + "Ho" #HaHo  
  10.   
  11. puts "Hello" << 119 #Hellow  
  12.   
  13. puts "Hello" << "Tony" #HelloTony  
  14.   
  15. puts "concat"  
  16.   
  17. puts "Hello".concat(" Tony"# Hello Tony  
  18.   
  19. str = "hello"  
  20.   
  21. str << 119  
  22.   
  23. puts str << "Tony" #hellowTony  


  1. #[] []=  
  2. puts "[],[]="  
  3.   
  4. str = "Hello Ruby"  
  5.   
  6. puts str[-1] # y  
  7. puts str[0] # H  
  8. puts str[1] #e  
  9. puts str[9] #y  
  10. puts str[10] #nil  
  11.   
  12. puts str[0..2] #hel  
  13.   
  14. puts str[0...2] #he  
  15.   
  16. puts str[0,2] #he  
  17.   
  18. puts str["e"#e  
  19.   
  20. str[0..2] = 'haha'  
  21.   
  22. puts str # hahalo Ruby  


  1. #ascii_only?  
  2. puts "ascii_only?"  
  3. puts __ENCODING__ #Big5  
  4.   
  5. puts "ruby".ascii_only? #true  
  6.   
  7. str = "中國"  
  8. puts str.ascii_only? #false  


  1. #bytes, chars, codepoints  
  2. #str.bytes -> enum  
  3. #str.bytes{|byte| block} -> str  
  4. #str.chars -> enum  
  5. #str.chars{|char| block}-> str  
  6. #codepoints(integers representation of the characters)  
  7. #str.codepoints -> enum  
  8. #str.codepoints {|integer| block} -> str  
  9. #getbyte  
  10. puts "bytes, getbyte"  
  11. "ruby".bytes.to_a #[114,117,98,121]  
  12.   
  13. puts "getbyte"  
  14. puts "ruby".getbyte(1) #117  
  15.   
  16. result = []  
  17.   
  18. puts "ruby".bytes {|byte| result << byte} #ruby  
  19.   
  20. p result #[114,117,98,121]  
  21.   
  22. puts "chars"  
  23.   
  24. "ruby".chars.to_a # ["r", "u", "b", "y"]  
  25.   
  26. result = []  
  27.   
  28. puts "ruby".chars {|char| result << char} #ruby   
  29.   
  30. p result # ["r", "u", "b", "y"]  
  31.   
  32. puts "codepoints"  
  33.   
  34. "中國".codepoints.to_a # [42148, 45290]  
  35.   
  36. result = []  
  37.   
  38. puts "中國".codepoints {|b| result << b} #中國  
  39.   
  40. p result #[42148, 45290]   



  1. #bytesize, length, size  
  2. puts "bytesize, length"  
  3.   
  4. puts "ruby".length #4  
  5. puts "ruby".bytesize #4  
  6. puts "ruby".size #4  
  7.   
  8. puts "中國".length # 2  
  9. puts "中國".bytesize # 4  
  10. puts "中國".size #2  


  1. #capitalize, capitalize!  
  2. #capitalize  return a copy of str with the first character converted to   
  3. #            uppcase and the remainder to lowercase  
  4. #capitalize! Modified str by converting the first character to uppercase and the   
  5. #            ramainder to lowercase .Returns nil if no changes are made  
  6. puts "capitalize, capitalize! "  
  7.   
  8. str = "hello Ruby"  
  9. puts "str = hello Ruby"  
  10.   
  11. puts "str.capitalize = > #{str.capitalize}" #Hello ruby  
  12.   
  13. puts "str = > #{str}" # hello Ruby  
  14.   
  15. puts "str.capitalize! = > #{str.capitalize!}" # Hello Ruby  
  16.   
  17. puts "str = > #{str}" # Hello Ruby  
  18.   
  19. puts "str.capitalize! = > #{str.capitalize!}" # nil  
  20.   
  21. puts "str = > #{str}" # Hello Ruby  


  1. #<=>, casecmp  
  2. puts "<=> , casecmp"  
  3.   
  4. puts "abc" <=> "Abc" #1  
  5.   
  6. puts "abc".casecmp("Abc"# 0  
  7.   
  8. puts "abc" <=> "ab" #1  
  9.   
  10. puts "abc".casecmp("ab"#1  
  11.   
  12. puts "ab" <=> "abc" #-1  
  13.   
  14. puts "ab".casecmp("abc"#-1  


  1. #center  
  2. puts "center"  
  3.   
  4. str = "ruby"  
  5.   
  6. puts str.center(4) #ruby  
  7.   
  8. puts str.center(5) #ruby  
  9.   
  10. puts str.center(10, '*'#***ruby***  
  11.   
  12. puts str # ruby  


  1. #chr return the first character  
  2.   
  3. puts "chr"  
  4.   
  5. puts "ruby".chr # r  
  6.   
  7. puts "中國".chr # 中  


  1. #clear removes the content(but not the associated encoding) of str  
  2.   
  3. puts "clear"  
  4.   
  5. str = "ruby"  
  6. puts str.clear #nil  
  7.   
  8. puts str.length #0  
  9.   
  10. #encoding: Big5  
  11. puts str.encoding #Big5  


  1. #chomp, chomp!  
  2. #chomp return new string with given record separator remove from the end of str  
  3. #str.chomp(rs = $/) -> string  
  4. puts "chomp, chomp!"  
  5.   
  6. str =  "ruby"  
  7.   
  8. p str.chomp # ruby  
  9.   
  10. p str.chomp("y"# rub  
  11.   
  12. str = "ruby\n"  
  13.   
  14. p str.chomp # ruby  
  15.   
  16. str = "ruby\n\r"  
  17.   
  18. p str.chomp # ruby\n  
  19.   
  20. str = "ruby\r\n"  
  21.   
  22. p str.chomp # ruby  
  23.   
  24. str = "ru \n by"  
  25. p str.chomp # ru \n by  


  1. #chop, chop!  
  2. #remove last character  
  3.   
  4. puts "chop"  
  5. "ruby".chop #rub  
  6. "ruby\n".chop # ruby  
  7. "ruby\r\n".chop #ruby  
  8. "R".chop.chop # ""  


  1. #count, delete, delete!   
  2. #str.count(<string>+)->int  
  3. #Each string parameter difines a set of characters to count.  
  4. #the intersection of these sets defines the characters to count in str  
  5. #Any parameter that starts with a caret(^) is negated  
  6. #The sequence c1-c2 means all characters between c1 and c2  
  7. puts "count"  
  8.   
  9. str = "hello world"  
  10. puts str.count "lo" #5 在str 中 有 3 個 l 和 兩個 0 => 3 + 2 = 5  
  11.   
  12. puts str.count "el" #4  
  13.   
  14. puts str.count "lo""o" #2 [l,o],[o]的交集是 0 在str中出現2個  
  15.   
  16. puts str.count "ej-m" # 4 [e,j,k,l,m] 在str 中有 1個 e 3個l 總共 4  
  17.   
  18. puts "delete"  
  19. puts str.delete "lo" # he wrd  
  20.   
  21. puts str # hello world  
  22.   
  23. puts str.delete! "e" # hllo world  
  24.   
  25. puts str # hllo world  
  26.   
  27. #crypt 加密  
  28. puts "crypt"  
  29.   
  30. puts "ruby".crypt "ruby"  


  1. #downcase, downcase!  
  2. puts "downcase downcase!"  
  3.   
  4. puts "ABC".downcase #abc  


  1. #dump  
  2. #Produces a version of str with all nonprinting characters replaced by \nnn notation  
  3. #and all special characters escaped  
  4. puts "dump"  
  5.   
  6. "ABC".dump #"\"ABC"\"  
  7.   
  8. "ABC" #"ABC"  


  1. #empty?  
  2. puts "empty?"  
  3.   
  4. puts "hello".empty? # false  
  5.   
  6. puts "".empty? #true  


  1. #encode, encode!, encoding, force_encoding  
  2. puts "encoding"  
  3.   
  4. str = "ruby"  
  5.   
  6. puts str.encoding #GBK  
  7.   
  8. puts str.encode("utf-8"# ruby  
  9.   
  10. puts str.encoding #GBK  
  11.   
  12. puts str.encode!("utf-8"# ruby  
  13.   
  14. puts str.encoding #utf-8  
  15.   
  16. str.force_encoding("GBK")  
  17.   
  18. puts str.encoding  #GBK  



  1. #gsub, gsub! 與正則表達式連用搜索字符串  
  2.   
  3. #start_with? end_with?  
  4. puts "start_with?, end_with"  
  5.   
  6. puts "Apache".end_with?("ache"# true  
  7.   
  8. puts "ruby code".end_with?("python""perl""code"# true  
  9.   
  10. puts "Apache".start_with?("Apa"# true  
  11.   
  12. puts "ruby code".start_with?("python","perl","ruby"#true  


  1. #index  
  2. puts "index"  
  3.   
  4. puts "hello".index("e"#1  
  5.   
  6. puts "hello".index("a"#nil  
  7.   
  8. puts "hello".index(/[aeiou]/, -3) #4  
  9.   
  10. puts "hello".index("lo",4) #nil 第二參數開始搜索的位置  


  1. #insert  
  2. puts "insert"  
  3.   
  4. puts "abcd".insert(0,"X"#Xabcd  
  5.   
  6. puts "abcd".insert(-1, "X"#abcdX  
  7.   
  8. puts "abcd".insert(1, "X"#aXbcd  
  9.   
  10. puts "abcd".insert(-2, "X"#abcXd  


  1. #intern  
  2. #Return the Symbol corresponding to str, creatin the symbol if it did not   
  3. #previously exist  
  4. puts "intern"  
  5.   
  6. "ruby".intern #:ruby  

你可能感兴趣的:(Ruby中是如何處理字符串的?)