字符串截取和查询
来源:互联网 发布:c语言模块化编程视频 编辑:程序博客网 时间:2024/04/30 10:12
也许String对象最重要的操作就是通过[]下标访问操作了,你可以通过这种方式提取字符串内容或者更改字符串内容。在Ruby1.8中字符串被当作一个字节或者8位的字符码数组,你可以通过length或者size方法获得这个数组的长度,你通过在[]设置索引数字来设置或者得到那个位置的值:
注意的一点是,索引是正向从0开始的,如果你使用负数索引那么最后一个字母是从-1开始索引的。而且,在Ruby中如果你给出了一个超出索引范围的下标,Ruby不会抛出异常,而是返回一个nil。
在Ruby1.9中返回值为一个字符串,而不是字符的编码:
如果要修改字符串内容,只要给相应位置赋值就可以了,Ruby1.8中你可以使用字符编码或者字符串作为赋值内容,在Ruby1.9中你应该使用字符串:
等号右边可以是任意的字符串,多字节字符串也是允许的,或者是一个空的字符串,一下代码在Ruby1.8和1.9都可以正常运行:
大多数情况下,你需要取得的是字符串中的一段内容,而不是一个单独的字符。要截取字符串中的一段内容你可以在[]中给出两个用逗号隔开的数字,通过这种方式你就可以得到一段文本了。其中第一个数字指出了我们要截取的文本从哪个位置开始索引,第二个字符指出了我们要截取的内容的长度:
另一种截取或者插入、删除、修改字符串的方式是使用Range(范围)对象,Range对象通过两个数字之间插入两个联系的点号表示,比如1..3表示范围在1到3之间。
注意的一点是,用逗号分隔的方式,分别指出了索引的开始位置和截取字符的长度,而使用Range对象是制定了一段索引的范围,两者是不同的。
另外,你还可以使用字符串作为索引,当你这样做的时候,你得到的是字符串中包含这个字符的第一个,如果查找不到你给出的字符,就返回一个nil对象:
s = 'hello'; # Ruby 1.8s[0] # 返回值为104,第一个字母'h'的ASCII码s[s.length-1] # 返回值为111,最后一个字母'o'的ASCII码s[-1] # 返回值为111,你可以使用负数索引s[-2] # 返回值为108,倒数第二个字母'l'的ASCII码s[-s.length] # 104: 另一种访问第一个字符的方式s[s.length] # nil: 如果超出索引范围就返回nil
注意的一点是,索引是正向从0开始的,如果你使用负数索引那么最后一个字母是从-1开始索引的。而且,在Ruby中如果你给出了一个超出索引范围的下标,Ruby不会抛出异常,而是返回一个nil。
在Ruby1.9中返回值为一个字符串,而不是字符的编码:
s = 'hello'; # Ruby 1.9s[0] # 返回'h's[s.length-1] # 返回'o's[-1] # 返回'o's[-2] # 返回'l's[-s.length] # 返回'h's[s.length] # nil:如果超出索引范围就返回nil
如果要修改字符串内容,只要给相应位置赋值就可以了,Ruby1.8中你可以使用字符编码或者字符串作为赋值内容,在Ruby1.9中你应该使用字符串:
s[0] = ?H # 将第一个字符替换为大写的Hs[-1] = ?O # 将最后一个字符替换为大写的Os[s.length] = ?! # 这里会出现异常,因为你的赋值超出了索引的访问
等号右边可以是任意的字符串,多字节字符串也是允许的,或者是一个空的字符串,一下代码在Ruby1.8和1.9都可以正常运行:
s = "hello" # 初始化字符串s[-1] = "" # 删除最后一个字符,现在s的值为hells[-1] = "p!" # 修改最后一个字符现在s的值为 "help!"
大多数情况下,你需要取得的是字符串中的一段内容,而不是一个单独的字符。要截取字符串中的一段内容你可以在[]中给出两个用逗号隔开的数字,通过这种方式你就可以得到一段文本了。其中第一个数字指出了我们要截取的文本从哪个位置开始索引,第二个字符指出了我们要截取的内容的长度:
s = "hello"s[0,1] = "H" # 将第一个字符替换为一个大写的Hs[s.length,0] = " world" # 在字符我末尾增加其他的字符串s[5,0] = "," # 在字符串中插入一个逗号s[5,6] = "" # 通过给一段文本赋值空文本的方式来删除那段文本,现在s == "Hellod"
另一种截取或者插入、删除、修改字符串的方式是使用Range(范围)对象,Range对象通过两个数字之间插入两个联系的点号表示,比如1..3表示范围在1到3之间。
s = "hello"s[2..3] # "ll": 位于索引2到3的字符s[-3..-1] # "llo": 负数索引页可以使用s[0..0] # "h": Range只包含一个字符s[0...0] # "": 空的Range对象s[2..1] # "": 这也是空的Ranges[7..10] # nil: 这个Range超出了索引范围,所以返回nils[-2..-1] = "p!" # 替换值,现在s=="help!"s[0...0] = "Please " # 在起始位置插入新值,现在s== "Please help!"s[6..10] = "" # 删除值,现在s== "Please!"
注意的一点是,用逗号分隔的方式,分别指出了索引的开始位置和截取字符的长度,而使用Range对象是制定了一段索引的范围,两者是不同的。
另外,你还可以使用字符串作为索引,当你这样做的时候,你得到的是字符串中包含这个字符的第一个,如果查找不到你给出的字符,就返回一个nil对象:
Created with colorer-take5 library. Type 'ruby's = "hello" while(s["l"]) # 循环判断是否包含字符 "l" s["l"] = "L"; # 将找到的字符从 "l" 替换为 "L"end # 现在s=="heLLo"
最后要说的是,你还可以在[]中包含正则表达式,这样会得到一个符合正则表达式的内容:s[/[aeiou]/] = '*' # 将找到的第一个原音替换为星号
0 0
- 字符串截取和查询
- 字符串截取和查询操作
- MySQL字符串截取 和 截取字符进行查询
- 查询时截取字符串
- mysql 字符串截取查询
- 有关字符串截取的和子父节点的查询
- hibernate查询语句截取字符串
- 截取mysql查询结果字符串
- 字符串截取和替换
- 字符串截取和逆序
- java 字符串截取和替换
- MySQL字符串追加和截取
- CString字符串查找和截取
- Android截取字段和字符串
- substring和substr截取字符串
- 字符串的截取和替换
- CString字符串查找和截取
- php 获取字符串 和 截取字符串
- Android 支持断点续传的多线程批量下载
- POJ_2255
- Android setTag()与getTag(),与set多个setTag()
- AJAX技术(3)
- iOS中使用ffmpeg
- 字符串截取和查询
- Oracle 数据的导入和导出(SID service.msc)
- Spring Integration GatewayProxyFactoryBean
- Eclipse快捷键技巧
- MFC动态画矩形(响应WM_MOUSEMOVE)
- nyoj123士兵杀敌(四)树状数组
- 【DB.Oracle】export/import dmp 文件
- 二叉树之二叉搜索树
- SSL和SSH的区别