国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁(yè) > 編程 > Ruby > 正文

ruby 標(biāo)準(zhǔn)類(lèi)型總結(jié)

2020-10-29 19:46:39
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
一、數(shù)字
  1. Ruby支持整數(shù)和浮點(diǎn)數(shù),整數(shù)可以是任意長(zhǎng)度
  2. 一定范圍內(nèi)的整數(shù)以二進(jìn)制存放,它們屬于fixnum類(lèi)型,當(dāng)超出這個(gè)范圍時(shí)則自動(dòng)轉(zhuǎn)換為bignum類(lèi)型
  3. 表達(dá)方式:符號(hào)+一串字符,數(shù)字串中的下劃線(xiàn)會(huì)被忽略,(前綴包括:0表示八進(jìn)制, 0x表示十六進(jìn)制, 0b表示二進(jìn)制)123_456_789_123_345_789 # Bignum
    0xaabb # 十六進(jìn)制
  4. 也可以通過(guò)在前面加上問(wèn)號(hào)來(lái)得到ASCII碼字符對(duì)應(yīng)的整數(shù)值和轉(zhuǎn)義序列的值
    ?a # 普通字符
    ?/n # 換行符 (0x0a)
    ?/C-a # CTRL+a (0x01)
    ?/M-a # ALT+a
    ?/M-/C-a # CTRL+ALT+a
    ?/C-? # 刪除鍵
  5. 一個(gè)帶小數(shù)點(diǎn)的數(shù)字字面值被轉(zhuǎn)換成Float對(duì)象
  6. 所有的數(shù)字都是對(duì)象,不存在相應(yīng)的函數(shù)而是方法
    exp:
    數(shù)字的絕對(duì)值是aNumber.abs而不是abs(aNumber)
  7. 整數(shù)有用的迭代器
    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位字節(jié)的簡(jiǎn)單序列,字符串是String類(lèi)的對(duì)象
  2. 注意轉(zhuǎn)換機(jī)制(注意單引號(hào)與雙引號(hào)的區(qū)別),如:
    單引號(hào)中兩個(gè)相連的反斜線(xiàn)被替換成一個(gè)反斜線(xiàn),,一個(gè)反斜線(xiàn)后跟一個(gè)單引號(hào)被替換成一個(gè)單引號(hào)
    'escape using "http://"' >> 轉(zhuǎn)義為"/" 'That/'s right' >> That's right
  3. 雙引號(hào)支持多義的轉(zhuǎn)義
    "/n"
    #{expr}序列來(lái)替代任何的Ruby表達(dá)式的值 ,(全局變量、類(lèi)變量或者實(shí)例變量,那么可以省略大括號(hào))
    "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來(lái)創(chuàng)建一個(gè)字符串,end_of_string 為結(jié)束符號(hào)
    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分別把字符串分隔成單引號(hào)和雙引號(hào)字符串(即%q與%Q后面的符號(hào)具有',"的功能)
    %q/general single-quoted string/ >> general single-quoted string
  6. String 常用功能
    String#split:把行分解成字段
    String#chomp:去掉換行符
    String#squeeze:剪除被重復(fù)輸入的字符
    String#scan:以指定想讓塊匹配的模式
    exp:
    /jazz/j00132.mp3 | 3:45 | Fats Waller | Ain't Misbehavin'
    /jazz/j00319.mp3 | 2:58 | Louis Armstrong | Wonderful World
    #文件格式如上,要進(jìn)行分解
    songs = SongList.new
    songFile.each do |line|
    file, length, name, title = line.chomp.split(//s*/|/s*/)#先chomp,后再分解,//s*表示任字符
    name.squeeze!(" ")#替換空格
    mins, secs = length.scan(//d+/)#這里用scan匹配模式
    songs.append Song.new(title, name, mins.to_i*60+secs.to_i)
    end
三、區(qū)間
  1. 區(qū)間存在于任何地方,如:1到12月。ruby用區(qū)間實(shí)現(xiàn)了3個(gè)不同的特性:序列,條件,間隔。
  2. "..":兩個(gè)點(diǎn)號(hào)創(chuàng)建一個(gè)閉區(qū)間,"...":而三個(gè)點(diǎn)號(hào)創(chuàng)建一個(gè)右開(kāi)區(qū)間(即右邊界不取值)
    exp:0..anArray.length-1 等同于 0...anArray.length
  3. to_a 把區(qū)間轉(zhuǎn)換成列表
    exp: ('bar'..'bat').to_a >> ["bar", "bas", "bat"]
  4. 區(qū)間的共它的用法
    digits = 0..9
    digits.include?(5) >> true
    digits.min >> 0
    digits.max >> 9
    digits.reject {|i| i < 5 } >> [5, 6, 7, 8, 9]
    digits.each do |digit|
    dial(digit)
    end
  5. ruby能把基于自己定義的對(duì)象的區(qū)間,要求:這個(gè)對(duì)象必須能夠響應(yīng)succ方法來(lái)返回序列中的下一個(gè)對(duì)象,并且這個(gè)對(duì)象必須能夠使用<=>運(yùn)算符來(lái)被比較,即常規(guī)的比較運(yùn)算符,
  6. 間隔測(cè)試
    puts (1..10).include?(3.14)=> ture
    puts (1..10) === 3.14 => ture
四、正則表達(dá)式
  1. 正則表達(dá)式是Regexp類(lèi)型的對(duì)象,可以使用構(gòu)造器顯式地創(chuàng)建一個(gè)正則表達(dá)式,也可以使用字面值形式/pattern/和%r/pattern/來(lái)創(chuàng)建
  2. 用Regxp#match(aString)的形式或者匹配運(yùn)算符=~(正匹配)和!~(負(fù)匹配)來(lái)匹配字符串了。匹配運(yùn)算符在String和Regexp中都有定義,如果兩個(gè)操作數(shù)都是字符串,則右邊的那個(gè)要被轉(zhuǎn)換成正則表達(dá)式
    exp:
    a = "Fats Waller"
    a =~ /a/ >> 1
    a =~ /z/ >> nil
    a =~ "ll" >> 7
  3. 上面返回的是匹配字符的位置,其它
    $&接受被模式匹配到的字符串部分
    $`接受匹配之前的字符串部分
    $'接受之后的字符串。
    exp:下面的方法后繼都會(huì)用到

    def showRE(a,re)
    if a =~ re
    "#{$`}<<#{$&}>>#{$'}" #返回前、中、后
    else
    "no match"
    end
    end
  4. 模式,任何一個(gè)表達(dá)式都包含一個(gè)模式,它用來(lái)把正則表達(dá)式和字任串匹配
    模式中除了., |, (, ), [, {, +, /, ^, $, *,和?以外的字任都匹配它自己
    如果要匹配這些特殊的字符就需要加上反斜線(xiàn)做前綴,分析上面例字
    //s*/|/s*/,在/s與|之前都加了/做前綴。
    showRE('kangaroo', /angar/) >> k<<angar>>oo
    showRE('!@%&-_=+', /%&/) >> !@<<%&>>-_=+
    showRE('yes | no', //|/) >> yes <<|>> no
  5. /后跟一個(gè)字母或數(shù)字表示一個(gè)特定的結(jié)構(gòu)如/s表示字符等。
  6. 錨點(diǎn) 一個(gè)正則表達(dá)式總是返回找到模式的第一個(gè)匹配,如何改變?
    模式^和$分別用來(lái)匹配行首和行尾
    序列/A匹配字符串開(kāi)始的位置,/z和/Z匹配字符串結(jié)尾的位置
    /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

五、字符類(lèi)
  1. 這里的字符類(lèi)不是面向?qū)ο蟮念?lèi),只表示這些這字符屬于一個(gè)特殊的種類(lèi)
  2. 字符類(lèi)是用方括號(hào)擴(kuò)起來(lái)的字符的集合:[characters]匹配方括號(hào)中的所有單字符。[aeiou]匹配元音,[,.:'!?]匹配標(biāo)點(diǎn)符號(hào)等等
    showRE('It costs $12.', /[aeiou]/) >> It c<<o>>sts $12.
  3. 在方括號(hào)中的序列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. 緊跟在開(kāi)括號(hào)([)后的是字符^,這表示這個(gè)字符類(lèi)的否定:[^a-z]匹配任何不是小寫(xiě)字母的字符。
  5. 字符類(lèi)縮寫(xiě)
    序列 形如 [ ... ] 含義
    /d [0-9] Digit character
    /D [^0-9] Nondigit
    /s [/s/t/r/n/f] Whitespace character 匹配一個(gè)單空白符
    /S [^/s/t/r/n/f] Nonwhitespace character
    /w [A-Za-z0-9_] Word character
    /W [^A-Za-z0-9_] Nonword character
  6. 重復(fù)
    r * 匹配0個(gè)或多個(gè)r的出現(xiàn)
    r + 匹配一個(gè)或多個(gè)r的出現(xiàn)
    r ? 匹配0個(gè)或1個(gè)r的出現(xiàn)
    r {m,n} 匹配最少m最多n個(gè)r的出現(xiàn)
    r {m,} 匹配最少m個(gè)r的出現(xiàn)

    重復(fù)結(jié)構(gòu)有高優(yōu)先權(quán):即它們僅和模式中的直接正則表達(dá)式前驅(qū)捆綁
    /ab+/匹配一個(gè)"a"后跟一個(gè)活著多個(gè)"b",而不是"ab"的序列
    /a*/會(huì)匹配任何字符串:0個(gè)或者多個(gè)"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. 替換
    "|"既匹配它前面的正則表達(dá)式或者匹配后面的
    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. 分組
    圓括號(hào)把正則表達(dá)式分組,組中的內(nèi)容被當(dāng)作一個(gè)單獨(dú)的正則表達(dá)式

    showRE('banana', /(an)+/) >> b<<anan>>a
    # 匹配重復(fù)的字母
    showRE('He said "Hello"', /(/w)/1/) >> He said "He<<ll>>o"
    # 匹配重復(fù)的子字符串
    showRE('Mississippi', /(/w+)/1/) >> M<<ississ>>ippi
  9. 基于模式的替換
    你是否想過(guò),大小寫(xiě)替換。
    方法String#sub和String#gsub都在字符串中搜索匹配第一個(gè)參數(shù)的部分,然后用第二個(gè)參數(shù)來(lái)替換它們。String#sub只替換一次,而String#gsub替換所有找到的匹配。都返回一個(gè)包含了替換的新的字符串的拷貝。進(jìn)化版本是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"
    第二個(gè)參數(shù)可以是代碼塊
    a = "the quick brown fox"
    a.sub (/^./) { $&.upcase } >> "The quick brown fox"
    a.gsub(/[aeiou]/) { $&.upcase } >> "thE qUIck brOwn fOx"
  10. 反斜線(xiàn)序列用在替換中
    /& 后面的匹配
    /+ 后面的匹配組
    /` 匹配前面的字符串
    /' 匹配后面的字符串
    // 反斜線(xiàn)的字面值
  11. 面向?qū)ο蟮恼齽t表達(dá)式
    正則表達(dá)式的字面值創(chuàng)建Regexp類(lèi)
    re = /cat/
    re.type >> Regexp
    方法Regexp#match從字符串中匹配一個(gè)正則表達(dá)式,如果不成功,方法返回nil,如果成功,返回MatchData類(lèi)的一個(gè)實(shí)例
    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"
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
亚洲一本大道| 国产高清自拍视频在线观看| 国产丝袜在线| 最新黄网在线观看| 九九免费视频| 中文字幕在线免费看| 九九热免费视频| 中文字幕在线视频观看| 国产精品欧美韩国日本久久| 2019年中文字幕| 亚洲www色| 国产女人伦码一区二区三区不卡| 超碰国产在线观看| 97国产视频| 九九热视频免费观看| 国产一级视频| 夜夜爽夜夜操| 国产麻豆综合视频在线观看| 国产精品入口麻豆免费| 四虎精品成人a在线观看| 国产美女性感在线观看懂色av| 国产高潮av| 久久国产热视频| 91视频久色| 国产一级片麻豆| 九九热免费视频| 精品精品导航| 国产免费视频| 亚洲视频精品在线观看| 五月婷婷在线观看| 亚洲成人在线播放| 最近中文字幕mv免费高清在线| 国产经典自拍视频在线观看| 欧美性猛交xxxxbbbb| 91高清国产| 国产区高清在线| 天堂资源最新版在线视频观看免费网| 92久久精品| 国产叼嘿网站免费观看不用充会员| 男女羞羞视频在线观看| 一区免费观看| 国产黄色在线网站| 国产丝袜护土调教在线视频| 麻豆精品永久免费视频| 日本黄在线观看| 在线黄色av| 国产系列在线观看| 国产美女av| 国产偷倩在线播放| 国产黄视频在线观看| 国产精品伦一区二区三区视频| 最新中文字幕在线视频| 国产美女自拍视频| 国产一级大片| 国产福利一区二区在线精品| 国产videos| 在线āv视频| 久草在线视频网| 国产免费av高清在线| 国产图片综合| 中文字幕av高清在线观看| 91亚洲欧美| www.夜夜操.com| 国产精品亚洲第五区在线| 国产深夜福利| 亚洲成av人影片在线观看| www狠狠操| 国产精品日日爱| 日韩在线天堂| 国产一区电影| 日本韩国精品一区二区| 午夜在线小视频| 99re6在线视频精品免费| 四虎久久影院| 国产精品久久久久白浆| 精灵使的剑舞无删减版在线观看| av二区三区| 国产理论电影在线| eeuss影院www在线播放| 国产欧美在线观看视频| а√最新版地址在线天堂| 国产欧美在线观看视频| 美女网站在线观看| 在线观看wwww| 国产黄色免费电影| 天堂资源中文在线| 超碰97在线免费观看| 国产精品视频一区二区免费不卡 | 国产在线视频福利| 国产高清av| 1区不卡电影| 国产在线观看av| av中文在线| 在线久久视频| 中文日本在线观看| 精品久久久久一区二区三区| 国产一二区在线| 久草在线资源福利| 热99re久久精品精品免费| 亚洲午夜久久久久中文字幕| 国产三级视频在线看| 黄色国产网站在线观看| av中文在线| 亚洲国产成人综合| eeuss在线观看| www.超级碰| 成人欧美日韩| 国产污视频在线| 国产视频二区| 国产精品合集一区二区| 国产黄色片大全| 精品国产丝袜高跟鞋| 精品亚洲综合| 亚洲欧美久久婷婷爱综合一区天堂| 91资源在线观看| 日本欧洲一区| 国产精品作爱| 国产三区视频在线观看| 天天操人人干| 国产h色视频在线观看| 国产高清在线视频| 日本一二三区视频免费高清| 九九热视频精品在线观看| 国产在线你懂得| √天堂8资源中文在线| 国产欧美日本亚洲精品一4区| 91视频久色| 黄网站在线观看高清免费| 中文字幕日本三级| 中文天堂av| 最新亚洲精品国自产在线观看| 中文字幕av免费| 成人av小说网| 国产性一级片| 另类专区欧美| 在线视频色在线| 国产精品爱久久久久久久小说| 丝袜理论片在线观看| 中文字幕在线影视资源| 亚洲网站视频在线观看| 日本中文字幕在线看| av在线官网| 99热在线免费播放| 美女av在线播放| 亚洲精品白浆| 国产福利在线看| 丁香婷婷激情| 久久精品国产亚洲777| 国产福利免费观看| 国产一区二区三区福利| 免费女人毛片视频| аⅴ成人天堂中文在线| 精品福利影院| 国产videos| 91社区在线观看| 国产欧美一区二区三区小说| 九九热视频免费观看| 日本在线天堂| 日本久久国产| 久热中文字幕精品视频在线| 日本黄在线观看| 蜜桃视频中文字幕| 免费精品国产自产拍在| 在线播放一区二区精品产| 精品卡1卡2卡三卡免费网站| 国产大学生粉嫩无套流白浆| 国产精品国产国产aⅴ| 国产福利av网站| 国产99re| 亚洲91av| 成人精品福利| 国产网友自拍视频导航网站在线观看| 国内外激情在线| 中文字幕日本三级| 国产视频资源| 伊人永久在线| 国产中文第一页| 中文字幕国产在线| 国产一区二区影视| 国产馆av播放| 日本在线免费中文字幕| 国产免费福利网站| 国产成+人+亚洲+欧美+综合| 伊人av免费在线观看| 免费看的av| 91高清国产| 国产在线高清| 在线天堂视频| 国产麻豆精品视频一区二区| **三级三级97片毛片| 在线观看av网站| 自拍av在线| 免费av不卡在线观看| 中文字幕有码在线视频| 在线激情小视频| 国产情侣高潮对白| 开心婷婷激情| av一级在线| 国产视频三区| 国产在线观看18|