Thursday, October 16, 2008

(10)字符串操作

String对象定义了一些列方法来操作字符串,使用+可以连接两个字符串:
planet = "Earth"
"Hello" + " " + planet # 输出 "Hello Earth"

Java 程序员需要注意Ruby并不会把要连接的对象自动转换为字符串,你必须调用to_s方法,或者可以使用字符串表达式#{}:
plant_number=2
print "hello "+plant_number.to_s()
print "hello ##{plant_number}"

<<操作符与+操作符类似,他会链接多个字符串,但是和+操作的一个重要区别是,他会改变链接的左边的字符串的值,比如:
greeting = "Hello"
greeting << " " << "World"
puts greeting # 输出"Hello World"

和+操作一样的是<<操作也不会自动转换对象为字符串,那么如果你<<一个整数,那么他会被当作一个字符的ASCII码来使用,除非你明确的调用了to_s方法:

alphabet = "A"
alphabet << ?B # Alphabet 值为 "AB"
alphabet << 67 # 现在的值为"ABC"
alphabet << 256 # 在Ruby 1.8这是不允许的,Ruby1.8只支持0~255之间的整数Ruby1.9没有限制,除非他超出了可表示的字符ASCII的范围

字符串右边*一个整数操作,代表重复输出n次当前的字符串。
ellipsis = '.'*3    # 结果为 '...'

如果*左边的字符串是一个表达式,那么规则是先计算表达式然后对结果进行*操作:
a = 0;
"#{a=a+1} " * 3 # 结果为"1 1 1 ", 而非 "1 2 3 "

String对象定义了所有的比较操作符:==,!=,<, <=, >, 和 >=。
==和!=比较两个文本是否完全相同,这和Java的对象比较是不同的,在Java中你必须调用object.equals(other)方法。其它的比较是按照字符所代表的编码符号的大小进行比较的,短字符串总是小于长字符串。字符串比较是大小写敏感的,因为他们代表的ACSII码是不同的。

No comments: