ruby 不可以通过+拼接字符串吗

Python015

ruby 不可以通过+拼接字符串吗,第1张

发现如果要把两个字符连接在一起。如

a = “abc”

b = a + “de”

此时b的值为”abcde”

但如果a = nil时,就会抛出未定义“+”的异常,因为此时a为nil。但如果我们改变一下b右边的表达式,将其改为b = “#{a}de”。这时就不会抛出错误了,此时b=>“de”。

字符串末尾追加字符时, 使用 String#concat 或 <<运算符(String#<<)

s = 'abc'

s.concat('def')

p s #=>"abcdef"

s = 'abc'

s <<'def'

p s #=>"abcdef"

<<运算符还可以有以下的写

s = ''

s <<'abc' << 'def'

p s #=>"abcdef"

正如你所知道的,Ruby字符串被称为一流的对象,它使用了大量的查询和操作方法。一个最基本的字符串操作是把一个字符串分割成多个子字符串。如果你有一个字符串,如“foo, bar, baz”而你希望的是这样三个字符串“foo”,“bar”,“baz”。那么字符串类的split方法就可以帮助你。

“split”的基本用法

Split方法的最基本用法分裂一个由单独字符或字符的静态序列组成的字符串。如果split的第一个变量是一个字符串,那么这个字符串中字符就会被当作一个字符串分隔符使用。但是在逗号分隔的数据中,逗号用来分隔数据,这里的每个字符串成分都被用来分隔数据。

#!/usr/bin/env ruby

str = "foo,bar,baz"

puts str.split(",")

$ ./1.rbfoobarbaz通过正则表达式来增加灵活性

当然,还有一些更容易的方法可以分隔字符串。正则表达式可以为split方法增加灵活性。这里再次拿“foo, bar, baz”。间隔在第一个逗号之后而不是第二个逗号。如果该字符串“,”被当成是分隔符,那么在“baz”字符串的开始处仍然会存在间隔。如果使用“,”字符串,它只与第一个逗号匹配,因为第二个逗号后面没有间隔。其作用还是有限的。

解决这个问题的办法是把正则表达式作为定界符的自变量,而不是使用字符串。正则表达式不仅可以匹配静态序列的字符,对字符的不定量和可选字符都同样起作用。

编写正则表达式

为你的分隔符编写一个正则表达式,第一步就是描述清楚什么是分隔符。在这种情况下,一个逗号后面可能存在一个或多个空格是合理的。这一正则表达式库中存在两个要素:逗号和可选的间隔。间隔会使用* (星号)量词,它表示的意思是“零或更多”。任何在它之前的要素都会匹配零次或若干次。例如,正则表达式/ a * /将匹配序列零或更多“a”字符。

#!/usr/bin/env ruby

str = "foo, bar,baz"

ruby判断字符串用"=="就可以。判断对象可以用"equal?"方法。此处与java相反。

p str1==str2返回的结果应该是先打印"str1==str2"的结果后,然后再输出一个空行。这点可以查看相关api。所以msgbox显示的是nil(即返回的空行)。

测试实例:

irb(main):002:0>s=p "1"=="1"

true

=>nil

irb(main):003:0>s

=>nil