ruby 字符串操作
?
1,切片:silce, [ ]-----------------[ ]是silce的别名,所以两者是完全相同的
操作1:判定字符串中是否含有字串/子模式
string[substring]
string[/pattern/]
string[/pattern/, position] #position之后的子串中是否含有/pattern/
如果存在返回子串/子模式串,否则返回nil
“hello world"["hello"]==="hello"
"hello world"[/.*lo/]==="hello"
"hello world"[/en/]===nil
?
操作2:使用索引截取子串
string[position] #注意返回的是ASCII码而不是字符
string[start, length]
string[start..end]
string[start...end]
?
2,比较:
== #比较字符串是否相等
eql? #??好像没有区别
<=> #用来比较字符串的大小,大于返回 1,小于返回 -1, 否则返回0
?
3,字符串的运算
downcase #改变字符串为全部小写
upcase #改变字符串为全部大写
swapcase#反写
capitalize #改变字符串为首字母大写
* #重复字符串
insert num, string #在num位置插入串string(insert没有!,因为insert会直接改变原串)
delete(!) string1 (,string2) #删除string1交string2的字符
gsub find, replace #将串中的find,替换为replace. find可以是正则表达式,replace很显然不可以。注意:是所有相同的都替换,相当与sed中的s/pattern/string/g
replace string #将字符串替换为string, 这是对象没有变,只是其中的内容发生了变化。
?
利用切片来改变字符串(silce!, [ ]=)
"hello"["ello"]= "w" # "hw"
"hello"[1]="wan" # "hwanllo"
“hello"[1..3]= "wrd" #"hwrdo"
"hello"[1...3]= "wr" #"hwrlo"
"hello"[1,3]="wrd" #"hwrdo"
"hello"[/el/]= "wr" #"hwrlo"
?
chomp(!) 用来摘除字符串末尾的换行符(如果不是换行符返回空)#注意只能是换行符,空格都不行
chop(!)用来摘除字符串末尾的最后一个字符
reverse(!)首尾倒置
split(/pattern/)将字符串分割成数组,分隔符是/pattern/(注意带!的方法不能用来改变类,所以split没有!)
?
?
字符串长度
string.length
string.size
?
字符串对齐
string.ljust num, char #用char来填充string,不足num的部分。注意左对齐是右填充。如果字符串长度比char大,忽略
string.rjust num, char
string.center num, char
?
string.lstring #trim字符串,去除左边空格
string.rstring
string.strip
..........那么如何去掉所有的空格呢? 很简单,使用gsub,进行替换
?
string.next/succ #string+1 不是+1这么简单。"a".next == "zz"
string1.upto(stringn) #string1, string2 ....stringn
?
字符串遍历:
string.each #分割不同项的必须是\n "hello\nworld".each {|e| puts e << ","}===
hello,
world,
"hello world".each{|e| puts e << ","}===
hello world,
string.each_byte #以字节为单位遍历
?
字符串到其他类型的转换
string.to_f/to_i #字符串--->浮点/整数
string.intern/to_sym #字符串--->符号
type.to_s #其他类型到字符串
Symbol.id2name#符号到字符串的专用转换
?
求字串的索引位置
string.index substring #正则表达式也可以
?
正则表达式专用
string.grep /pattern/ #如果不是正则表达式搜索不到任何东西,如果是且匹配返回包含整个字符串的一个数组
string =~ /pattern/ #pattern第一次出现的位置
string !~ /pattern/ #如果没有找到/pattern返回true(注意!)