zoukankan      html  css  js  c++  java
  • ruby学习笔记(6)

    String 类

    1)单引号和双引号。 单引号不会对里面的字符进行转义,类似于"\n”这样的转义会直接输出,也不能包含表达式。双引号则可以包含转议字符,也能包含表达式,表达式的格式为 #{xxxx}。需要注意的是,如果单引号里的字符串也包含单引号,还是要用“\'”进行转义的,这个转义是支持的。

    =======================

    a = "abc"

    b = "1\n2\n3\n#{a}"

    c = '1\n2\n3\n#{a}'

    puts b          #=> 1   2   3   abc

    puts c          #=>    1\n2\n3\n#{abc}

    =======================

    2) 新建字符串。

           <1> 直接使用 ""和''生成字符串。

            <2> 使用String.new()生成字符串。

           <3> 使用%Q和%q。 如果字符串中包括""或''时,不想使用\"和\'频繁转义,可以使用%Q和%q来生成字符串。其中%Q相当于",%q相当于'。和%w一样,分界符可以用<> @@之类的。

    =======================

    %Q(1\n2\n3\n#{a}"5678"'9012')

    %q<1\n2\n3\n#{a}'5678'"9012">

    =======================

             <4> 如果是多行文本,可以使用<<"xxx" 或 <<-"xxx"来实现多行。一般xxx多使用EOB或EOF,表示end of black和end of file。注意,如果是xxx可以用单引号或双引号引起来,分别代表单引和双引,也可以不带引号,默认代表双引。注意<<和xxx之间要连在一起,不要有空格。

    ======================

    a = 123

    s = <<-"EOB”

    i : abc

    j : #{a}

    adang is me

    EOB

    print s                     #=> i : abc   

                                           j : 123

                                            adang is me

    ======================

    3) 字符串的长度。 字符串的长度可以用str.size或者str.length来获得。如果是英文字符,那么可以正常返回字符个数,但如果是非英文字符,比如说是中文字符,size返回的值就不正确了。因为ruby中返回的是字节数,不是字符数,这点和js不同。如果是中文,跟编码格式有关,如果是utf-8编码,那么一个中文占用三个字节,如果是ANSI编码,那么一个中文占用两个字节。为了解决这个问题,可以借助于正则表达式,换个思路获得字符串的字符长度。例如utf-8编码的,用str.split(//u).length,ANSI编码的,用str.split(//e).length。

    =======================

    utf-8编码

    a = "我是个中文abc"              

    puts a.size                               #=> 18      (5X3+3 = 18)

    puts a.split(//u).length             #=> 8         (5+3 = 8)

    ANSI编码

    a = "我是个中文abc"              

    puts a.size                               #=> 13      (5X2+3 = 13)

    puts a.split(//e).length             #=> 8         (5+3 = 8)

    =======================

    4) empty?    ruby中字符串提供了empty?方法判断是否为空。注意,如果有空格或者tab,都不算为空的。

    =======================

    a = ""

    p a.empty?               #=> true

    a = " "

    p a.empty?               #=> false

    =======================

    5) split和unpack。 ruby中分割字符串有两种方法,一种是split,按特定字符分隔,另一种是unpack,按“字节”数分隔。unpack的参数格式是aXaX,“X”表示要截取的字节数。需要注意提,如果X+X的字符数不够整个字符串长度的话,字符串后面的字符就没了,如果超过总长度的话,会按最大数来截取,如果不确定最后一节的长度,可以使用a*来截取至结尾处的部分。

    =======================

    a = "1:2:3:4:5:6"

    p a.split(":")         #=>["1","2","3","4","5","6"]

    p a.unpack("a2a3")    #=>["1:","2:3"]

    p a.unpack("a2a30") #=>["1:","2:3:4:5:6"]

    p a.unpack("a2a3a*") #=>["1:","2:3","4:5:6"]

    =======================

    6) +,<<,和concat。 ruby中字符串的连接有三个方式。用+号可以新建一个字符串,用<<和concat可以修改原字串的值(不新建字符串)。因为<<和concat是修改址的方法,影响会比较大,切忌不要乱用。

    =======================

    a = "123"

    b = "456"

    p a + b      #=> "123456"

    p a            #=> "123"

    a = "123"

    b = "456"

    a << b     

    p a            #=> "123"

    a = "123"

    b = "456"

    a.concat(b)     

    p a            #=> "123456"

    =======================

    7) chomp! 。 删除行尾换行符。 以gets等方法从标准输入读入字符串时,行尾会接着换行符,但实际在处理字符串时,换行符经常很碍事,因此,加上chomp!几乎是一种固定写法。

    =======================

    a = "123\n"

    p a.size           #=>4

    a.chomp!

    p a.size           #=>3

    while line = gets

        line.chomp!

         ..

    end

    =======================

    8) chop和chop!。 用于删除字符串的最后一个字符。

  • 相关阅读:
    单表查询与多表查询
    我对Jenkins的认识
    Jenkins的使用
    关于CDN的认识
    linux permission denied解决方法
    linux 最近使用的命令
    JVM相关参数的采集
    double 和 float
    BlockingQueue 阻塞队列,很有用的一种
    使用maven打包的注意事项
  • 原文地址:https://www.cnblogs.com/cly84920/p/4426911.html
Copyright © 2011-2022 走看看