Ruby字符串
单引号字符串
单引号字符串没什么好说的,跟别的语言没什么区别
双引号字符串
在双引号字符串里面可以使用#{}来表达计算式的值,比如
x, y = 12, 36
puts "x + y 的值为 #{ x + y }"
如果你就是想同时用单引号和双引号,Ruby还提供 %Q 和 %q 来引导的字符串变量, %q 使用的是单引号规则, %Q 使用的是双引号规则
比如
desc1 = %Q{Ruby 的字符串可以使用 '' 和 ""。}
desc2 = %q|Ruby 的字符串可以使用 '' 和 ""。|
puts desc1
puts desc2
个人理解:这个功能简直就是蛋疼,虽然考虑到了极端情况,但是别的语言中,比如javascript也是这样的规则,但是都没出过什么大的问题,没有必要增加这种函数。反而降低了可读性
转义字符
没什么好说的,跟别的语言差不多,需要的时候查看表格就行了
字符串内建方法
内建方法有很多,有几个比较引起我的注意- str == obj 检查 str 和 obj 的相等性。如果 obj 不是字符串,则返回 false,如果 str <=> obj,则返回 true,返回 0。
- str =~ obj 根据正则表达式模式 obj 匹配 str。返回匹配开始的位置,否则返回 false
- str.capitalize 把字符串的首字母转换为大写字母显示。
- str.capitalize! 把字符串的首字母转换为大写字母显示。但是 str 会发生变化并返回,后面所有函数后面加感叹号都是表示会修改原本的变量
- str.casecmp 不区分大小写的字符串比较,比较的结果是数字,-1, 0 ,1
- str.count(str, ...)给一个或多个字符集计数。如果有多个字符集,则给这些集合的交集计数
- str.crypt(other_str) 给字符串加密,注意:这个方法是一个单向加密,并且other_str是一个2个字符的salt (长于2位字符的字符会被忽略,除非用$符号,但是用法实在太怪了),并且只有前8个字符会被加密,总之此方法甚怪,最好用专门的module比如BASE64或者Digest来做加密
- str.delete(other_str, ...) 返回 str 的副本,参数交集中的所有字符会被删除
- str.delete!(other_str, ...) 与 delete 相同,但是 str 会发生变化并返回。很多方法加上!意思就是把调用该方法的实例自己给改了,具体要用的时候可以查查手册看该方法是否有对应的加!的版本
- str.downcase 把字符串转小写 相对的 str.upcase 是讲字符都转换为大写
- str.each_line(separator=$/) { |substr| block } 使用参数作为记录分隔符(默认是 $/)分隔 str,传递每个子字符串给被提供的 block。这个是逐行处理,还有逐词处理(空格分隔)和逐字节处理,具体请参考手册
- str.empty? 如果 str 为空(