亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Ruby > 正文

ruby 標準類型總結

2020-03-29 12:11:22
字體:
來源:轉載
供稿:網友
一、數字
  1. Ruby支持整數和浮點數,整數可以是任意長度
  2. 一定范圍內的整數以二進制存放,它們屬于fixnum類型,當超出這個范圍時則自動轉換為bignum類型
  3. 表達方式:符號+一串字符,數字串中的下劃線會被忽略,(前綴包括:0表示八進制, 0x表示十六進制, 0b表示二進制)123_456_789_123_345_789 # Bignum
    0xaabb # 十六進制
  4. 也可以通過在前面加上問號來得到ASCII碼字符對應的整數值和轉義序列的值
    ?a # 普通字符
    ?/n # 換行符 (0x0a)
    ?/C-a # CTRL+a (0x01)
    ?/M-a # ALT+a
    ?/M-/C-a # CTRL+ALT+a
    ?/C-? # 刪除鍵
  5. 一個帶小數點的數字字面值被轉換成Float對象
  6. 所有的數字都是對象,不存在相應的函數而是方法
    exp:
    數字的絕對值是aNumber.abs而不是abs(aNumber)
  7. 整數有用的迭代器
    3.times { print "X " } => X X X 1.upto(5) { |i| print i, " " } =>1 2 3 4 5 99.downto(95) { |i| print i, " " }=>99 98 97 96 95 50.step(80, 5) { |i| print i, " " }=>50 55 60 65 70 75 80
二、字符串
  1. Ruby的字符串是8位字節的簡單序列,字符串是String類的對象
  2. 注意轉換機制(注意單引號與雙引號的區別),如:
    單引號中兩個相連的反斜線被替換成一個反斜線,,一個反斜線后跟一個單引號被替換成一個單引號
    'escape using "//"' >> 轉義為"/" 'That/'s right' >> That's right
  3. 雙引號支持多義的轉義
    "/n"

    #{expr}序列來替代任何的Ruby表達式的值 ,(全局變量、類變量或者實例變量,那么可以省略大括號)
    "Seconds/day: #{24*60*60}" >> Seconds/day: 86400 "#{'Ho! '*3}Merry Christmas" >> Ho! Ho! Ho! Merry Christmas "This is line #$." >> This is line 3
  4. here document來創建一個字符串,end_of_string 為結束符號
    aString = <<END_OF_STRING The body of the string is the input lines up to one ending with the same text that followed the '<<' END_OF_STRING
  5. %q和%Q分別把字符串分隔成單引號和雙引號字符串(即%q與%Q后面的符號具有',"的功能)
    %q/general single-quoted string/ >> general single-quoted string
  6. String 常用功能
    String#split:把行分解成字段
    String#chomp:去掉換行符
    String#squeeze:剪除被重復輸入的字符
    String#scan:以指定想讓塊匹配的模式
    exp:

    /jazz/j00132.mp3 | 3:45 | Fats Waller | Ain't Misbehavin'
    /jazz/j00319.mp3 | 2:58 | Louis Armstrong | Wonderful World
    #文件格式如上,要進行分解

    songs = SongList.new
    songFile.each do |line|
    file, length, name, target='_blank'>正則表達式
  1. 正則表達式是Regexp類型的對象,可以使用構造器顯式地創建一個正則表達式,也可以使用字面值形式/pattern/和%r/pattern/來創建
  2. 用Regxp#match(aString)的形式或者匹配運算符=~(正匹配)和!~(負匹配)來匹配字符串了。匹配運算符在String和Regexp中都有定義,如果兩個操作數都是字符串,則右邊的那個要被轉換成正則表達式
    exp:
    a = "Fats Waller"
    a =~ /a/ >> 1
    a =~ /z/ >> nil
    a =~ "ll" >> 7
  3. 上面返回的是匹配字符的位置,其它
    $&接受被模式匹配到的字符串部分
    $`接受匹配之前的字符串部分
    $'接受之后的字符串。
    exp:下面的方法后繼都會用到

    def showRE(a,re)
    if a =~ re
    "#{$`}<<#{$&}>>#{$'}" #返回前、中、后
    else
    "no match"
    end
    end
  4. 模式,任何一個表達式都包含一個模式,它用來把正則表達式和字任串匹配
    模式中除了., |, (, ), [, {, +, /, ^, $, *,和?以外的字任都匹配它自己
    如果要匹配這些特殊的字符就需要加上反斜線做前綴,分析上面例字
    //s*/|/s*/,在/s與|之前都加了/做前綴。

    showRE('kangaroo', /angar/) >> k<<angar>>oo
    showRE('!@%&-_=+', /%&/) >> !@<<%&>>-_=+
    showRE('yes | no', //|/) >> yes <<|>> no
  5. /后跟一個字母或數字表示一個特定的結構如/s表示字符等。
  6. 錨點 一個正則表達式總是返回找到模式的第一個匹配,如何改變?
    模式^和$分別用來匹配行首和行尾
    序列/A匹配字符串開始的位置,/z和/Z匹配字符串結尾的位置
    /b和/B分別匹配字邊界和非字邊界
    showRE("this is/nthe time", /^the/) >> this is/n<<the>> time
    showRE("this is/nthe time", /is$/) >> this <<is>>/nthe time
    showRE("this is/nthe time", //Athis/) >> <<this>> is/nthe time

 

五、字符類
  1. 這里的字符類不是面向對象的類,只表示這些這字符屬于一個特殊的種類
  2. 字符類是用方括號擴起來的字符的集合:[characters]匹配方括號中的所有單字符。[aeiou]匹配元音,[,.:'!?]匹配標點符號等等
    showRE('It costs $12.', /[aeiou]/) >> It c<<o>>sts $12.
  3. 在方括號中的序列c1-c2表示在c1-c2之間也包括c1和c2的所有字符
    a = 'Gamma [Design Patterns-page 123]'
    showRE(a, /[]]/) >> Gamma [Design Patterns-page 123<<]>>
    showRE(a, /[B-F]/) >> Gamma [<<D>>esign Patterns-page 123]
    showRE(a, /[-]/) >> Gamma [Design Patterns<<->>page 123]
    showRE(a, /[0-9]/) >> Gamma [Design Patterns-page <<1>>23]
  4. 緊跟在開括號([)后的是字符^,這表示這個字符類的否定:[^a-z]匹配任何不是小寫字母的字符。
  5. 字符類縮寫
    序列 形如 [ ... ] 含義
    /d [0-9] Digit character
    /D [^0-9] Nondigit
    /s [/s/t/r/n/f] Whitespace character 匹配一個單空白符
    /S [^/s/t/r/n/f] Nonwhitespace character
    /w [A-Za-z0-9_] Word character
    /W [^A-Za-z0-9_] Nonword character
  6. 重復
    r * 匹配0個或多個r的出現
    r + 匹配一個或多個r的出現
    r ? 匹配0個或1個r的出現
    r {m,n} 匹配最少m最多n個r的出現
    r {m,} 匹配最少m個r的出現

    重復結構有高優先權:即它們僅和模式中的直接正則表達式前驅捆綁
    /ab+/匹配一個"a"后跟一個活著多個"b",而不是"ab"的序列
    /a*/會匹配任何字符串:0個或者多個"a"的任意字符串。 
    exp:
    a = "The moon is made of cheese"
    showRE(a, //w+/) >> <<The>> moon is made of cheese
    showRE(a, //s.*/s/) >> The<< moon is made of >>cheese
    showRE(a, //s.*?/s/) >> The<< moon >>is made of cheese
    showRE(a, /[aeiou]{2,99}/) >> The m<<oo>>n is made of cheese
    showRE(a, /mo?o/) >> The <<moo>>n is made of cheese
  7. 替換
    "|"既匹配它前面的正則表達式或者匹配后面的

    a = "red ball blue sky"
    showRE(a, /d|e/) >> r<<e>>d ball blue sky
    showRE(a, /al|lu/) >> red b<<al>>l blue sky
    showRE(a, /red ball|angry sky/) >> <<red ball>> blue sky
  8. 分組
    圓括號把正則表達式分組,組中的內容被當作一個單獨的正則表達式

    showRE('banana', /(an)+/) >> b<<anan>>a
    # 匹配重復的字母
    showRE('He said "Hello"', /(/w)/1/) >> He said "He<<ll>>o"
    # 匹配重復的子字符串
    showRE('Mississippi', /(/w+)/1/) >> M<<ississ>>ippi
  9. 基于模式的替換
    你是否想過,大小寫替換。
    方法String#sub和String#gsub都在字符串中搜索匹配第一個參數的部分,然后用第二個參數來替換它們。String#sub只替換一次,而String#gsub替換所有找到的匹配。都返回一個包含了替換的新的字符串的拷貝。進化版本是String#sub!和 String#gsub!

    a = "the quick brown fox"
    a.sub(/[aeiou]/, '*') >> "th* quick brown fox"
    a.gsub(/[aeiou]/, '*') >> "th* q**ck br*wn f*x"
    a.sub(//s/S+/, '') >> "the brown fox"
    a.gsub(//s/S+/, '') >> "the"
    第二個參數可以是代碼塊
    a = "the quick brown fox"
    a.sub (/^./) { $&.upcase } >> "The quick brown fox"
    a.gsub(/[aeiou]/) { $&.upcase } >> "thE qUIck brOwn fOx"
  10. 反斜線序列用在替換中
    /& 后面的匹配
    /+ 后面的匹配組
    /` 匹配前面的字符串
    /' 匹配后面的字符串
    // 反斜線的字面值
  11. 面向對象的正則表達式
    正則表達式的字面值創建Regexp類
    re = /cat/
    re.type >> Regexp

    方法Regexp#match從字符串中匹配一個正則表達式,如果不成功,方法返回nil,如果成功,返回MatchData類的一個實例
    exp:

    e = /(/d+):(/d+)/ # match a time hh:mm
    md = re.match("Time: 12:34am")
    md.type >> MatchData
    md[0] # == $& >> "12:34"
    md[1] # == $1 >> "12"
    md[2] # == $2 >> "34"
    md.pre_match # == $` >> "Time: "
    md.post_match # == $' >> "am"

上一篇:ruby 去掉文件里重復的行

下一篇:ruby on rails 代碼技巧

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情videoshd| 欧美情侣性视频| 亚洲精品国产欧美| 91精品国产电影| 国内精品在线一区| 亚洲精品ady| 国产精品久久久久av免费| 久久久久久18| 久久久久久久久久国产精品| 亚洲美女自拍视频| 国产精品aaaa| 久久成人人人人精品欧| 欧美日韩国产成人在线| 国产欧美精品久久久| 欧美福利在线观看| 国产z一区二区三区| 国产精品一区二区久久国产| 日韩日本欧美亚洲| 国产精品久久久久久亚洲影视| 日韩美女视频中文字幕| 91成人天堂久久成人| 国产精品高潮呻吟久久av无限| 欧美一二三视频| 久久精品亚洲热| 日韩视频欧美视频| 日韩av免费在线观看| 亚洲综合大片69999| 欧美在线视频一二三| 国产精品美女呻吟| 91欧美精品午夜性色福利在线| 国产精品扒开腿做爽爽爽男男| 欧美在线视频播放| 成人免费福利视频| 88xx成人精品| 国产日韩欧美中文在线播放| 欧美床上激情在线观看| 在线看片第一页欧美| 亚洲自拍小视频| 精品久久久久久久久久ntr影视| 国产精品美女呻吟| 最新的欧美黄色| 欧洲亚洲在线视频| 国模精品一区二区三区色天香| 97久久超碰福利国产精品…| 日韩av手机在线看| 午夜精品蜜臀一区二区三区免费| 亚洲人成在线观看网站高清| 亚洲欧美国产一区二区三区| 91福利视频在线观看| 成人性教育视频在线观看| 午夜精品视频在线| 亚洲va久久久噜噜噜| 97成人精品区在线播放| 国产婷婷97碰碰久久人人蜜臀| 国产黑人绿帽在线第一区| 午夜精品理论片| 亚洲少妇中文在线| 欧美日韩中文字幕日韩欧美| 在线精品播放av| 日本sm极度另类视频| 成人黄色av网| 国产欧美一区二区三区久久人妖| 91精品国产乱码久久久久久蜜臀| 91欧美激情另类亚洲| 日韩av在线免费观看一区| 中文字幕日韩精品在线| 色综合天天综合网国产成人网| 4388成人网| 欧美噜噜久久久xxx| 78m国产成人精品视频| 91国内免费在线视频| 欧美一级大片视频| 欧美乱人伦中文字幕在线| 日韩电影免费在线观看| 欧美精品久久久久久久| 欧美另类69精品久久久久9999| 青草青草久热精品视频在线网站| 国产精品日韩欧美大师| 成人a在线视频| 国产一区二区av| 91在线高清视频| 欧美激情网站在线观看| 国产一区视频在线| 97视频人免费观看| 欧美在线观看一区二区三区| 精品久久久久久中文字幕大豆网| 国产色综合天天综合网| 亚洲精品456在线播放狼人| 91av在线精品| 欧美国产在线电影| 一区二区三区久久精品| 色偷偷888欧美精品久久久| 亚洲永久在线观看| 欧美高清videos高潮hd| 日韩av在线资源| 成人精品一区二区三区| 精品久久久视频| 亚洲天堂免费视频| 欧美午夜影院在线视频| 2024亚洲男人天堂| 国产男女猛烈无遮挡91| 这里精品视频免费| 国产女同一区二区| 日本免费久久高清视频| 国产视频亚洲视频| xx视频.9999.com| 久久久久www| 国产精品扒开腿做| 欧美丝袜一区二区三区| 91色琪琪电影亚洲精品久久| 中文字幕欧美精品日韩中文字幕| 激情久久av一区av二区av三区| 热草久综合在线| 国产一区二区av| 亚洲人成伊人成综合网久久久| 亚洲国产精品国自产拍av秋霞| 精品国产精品三级精品av网址| 国产日韩在线看片| 国产精品成人一区二区三区吃奶| 亚洲欧美综合另类中字| 成人av在线天堂| 日韩中文有码在线视频| 亚洲精品videossex少妇| 欧美成在线观看| 欧美日韩免费在线| 久久91超碰青草是什么| 久久影院免费观看| 欧美综合一区第一页| 久久久久久97| 久99九色视频在线观看| 久久国内精品一国内精品| 一本一本久久a久久精品综合小说| 国产精品美女呻吟| 欧美尤物巨大精品爽| 97高清免费视频| 国产97在线观看| 亚洲精品短视频| 亚洲日本欧美中文幕| 91国产精品91| 国产精品人人做人人爽| 亚洲精品在线不卡| 国产亚洲精品久久| 欧美自拍视频在线观看| 中文字幕日韩欧美在线| 欧美丰满片xxx777| 午夜免费久久久久| 亚洲精品xxx| 国产精品扒开腿做| 777国产偷窥盗摄精品视频| 国产亚洲一级高清| 2020国产精品视频| 日韩一二三在线视频播| www.午夜精品| 午夜美女久久久久爽久久| 91精品在线影院| 亚洲最大的av网站| 亚洲精美色品网站| 国产不卡一区二区在线播放| 中文字幕欧美亚洲| 久久久久亚洲精品国产| 4444欧美成人kkkk| 7777精品久久久久久| 亚洲精品在线91| 日韩大陆毛片av|