String类
更新: 2017/06/10
更新: 2017/06/23 puts()要空格可以直接不加参数
更新: 2017/08/17 增加rails引入的titleize
更新: 2017/12/06 增加gsub
更新: 2018/01/08 完善分割字符串方法 split
更新: 2018/02/26 子表格宽度不为100%的设为100%(只有一处, 置换)
                              删除过多的空tr
更新: 2019/04/04 补充gsub的用法
 
 生成  str = "test"
 str = 'test'
 str = %Q(...)  
    #="..."
 str = %q(...)  
    #='...'
 注: '...' 不解析内容(#{})
 输出  printf("", ...)
 sprintf("", ...)
区别: printf()输出到CMD
     
  sprintf()返回字符串

 %c  字符
 %s  字符串
 %p  p()的格式
 %b, %B  2进制
 %o  8进制
 %d, %i  10进制
 %x, %X  16进制
 %f  浮点数
 %e  浮点数
 科学计数法
 %%  %
 其他输出 print(),puts(),p()
puts()带换行,p()不分析内容,带换行
只要换行的话可以不带参数
插值 #{}
 获取长度   str.length
 str.size
 索引  参考Array
 连接字符串  str1 << str2
 str1.concat(str2)
 str1 += str2
 分割字符串  str.split(/:/)
 详细信息的传送门 
 去掉换行  str.chomp!()
 str.chomp()
删除最后一个字符
 str.chop()
 str.chop!()
 搜索  str.index("test")
 str.rindex("test")  从右边开始

str.include?(test) 只看是否包含

 置换

 str[n] 
 str[n..m], str[n...m]
 str[n, length]
 str.slice(...)
 str.slice(n)
str.slice(n, l)
 str.slice!(...)  
 方法

获取部分元素    str[n] 
 str[n..m], str[n...m]
 str[n, length] 
 str.slice(...)
 str.slice(n)
 str.slice(n, l)
 str.slice!(...)
 连接  str1 << str2
 str1.concat(str2)
 str1 += str2
 删除  str.delete(str)
 str.delete!(str)
 倒序  str.reverse()
 str.reverse!()
 去掉开头与结尾的空白  str.strip()
 str.strip!()
 大小写  str.upcase()
 str.upcase!()
 str.downcase()
 str.downcase!()
 大小写反向  str.swapcase()
 str.swapcase!()
 首字母大写,其他小写  str.capitalize()
 str.captilize!()
 置换部分文字  s.tr(origin, swap)
 s.tr!(origin, swap)
 文字代码  str.encode() 获取当前文字代码
 str.encode(str) 切换文字码
 nkf库  半角与全角的相互转换
 Rails导入

 生成标题  str.titleize
 自动创建合适的标题
 "model_year".titleize  
     
  Model Year 
 'ThisIsCamelType'.titleize  
 This Is Camel Type
   

 gsub
# 第二参数为字符串
gsub(pattern, replace) -> String
gsub!(pattern, replace) -> String
# 第二参数为hash 用value替换key
gsub(pattern, hash) -> String
gsub!(pattern, hash) -> self | nil
# 代码块
gsub(pattern) {|matched| .... } -> self | nil # 置换了返回self, 否则nil
gsub!(pattern) {|matched| .... } -> self | nil

● 参数

 pattern

字符串或者正规表现

 replace  字符串, 替代匹配到的所有子字符串
 hash

匹配到的字符串里的所有字符都作为key, 用value来替代

● 这种pattern必须为正规表现

hash = {'b'=>'B', 'c'=>'C'}
p "abcabc".gsub(/[bc]/){hash[$&]} #=> "aBCaBC"
p "abcabc".gsub(/[bc]/, hash) #=> "aBCaBC"
   
   
   

Ruby  String类的更多相关文章

  1. 标准库String类

    下面的程序并没有把String类的所有成员方法实现,只参考教程写了大部分重要的成员函数. [cpp] view plain copy #include<iostream> #include ...

  2. 自己实现简单的string类

    1.前言 最近看了下<C++Primer>,觉得受益匪浅.不过纸上得来终觉浅,觉知此事须躬行.今天看了类类型,书中简单实现了String类,自己以前也学过C++,不过说来惭愧,以前都是用C ...

  3. C++ string类的实现

    c++中string类的实现 今天面试被考到了, 全给忘记了!!!   //string类的实现 #include <iostream> #include <string.h> ...

  4. String类的功能

    String类              标红的为较少出现的 1.判断功能 boolean equals(Object obj) :比较字符串内容是否相同,区分大小写 boolean equalsIg ...

  5. java基础复习:final,static,以及String类

    2.final 1)为啥String是final修饰的呢? 自己答: 答案: 主要是为了“效率” 和 “安全性” 的缘故.若 String允许被继承, 由于它的高度被使用率, 可能会降低程序的性能,所 ...

  6. String类和StringBuffer类的区别

    首先,String和StringBuffer主要有2个区别: (1)String类对象为不可变对象,一旦你修改了String对象的值,隐性重新创建了一个新的对象,释放原String对象,StringB ...

  7. 05_整理String类的Length()、charAt()、 getChars()、replace()、 toUpperCase()、 toLowerCase()、trim()、toCharArray()使用说明

    Question: 整理String类的Length().charAt(). getChars().replace(). toUpperCase(). toLowerCase().trim().toC ...

  8. 标准C++中的string类的用法总结

    标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有 ...

  9. String类常用方法

    1.String类的特点,字符串一旦被初始化就不会被改变. 2.String对象定义的两种方式 ①String s = "affdf";这种定义方式是在字符串常量池中创建一个Str ...

随机推荐

  1. 【转载】ubuntu16.04 无线/Wifi 上网速度慢的解决方法

    原文链接:http://tieba.baidu.com/p/4737599703[侵删] 一直以为是域名解析的问题,可也觉得不像.今天在百度搜索“ubuntu16.04域名解析慢”的时候无意中看到了h ...

  2. Shell脚本的编写,sed的使用以及一些正则表达式

    Shell脚本的简单编写以及sed的使用 标签(空格分隔): 博客文章 前一阵子为了批量修改Web审计规则,故编写了一个Shell脚本,顺便使用了下sed,顺便把正则表达式也重新学习一遍,感觉还是需要 ...

  3. java 字节码 指令集

    有时候为了能理解JVM对程序所做的优化等,需要查看程序的字节码,因此知道了解一些常见的指令集很重要! 指令码 助记符 说明 0x00 nop 什么都不做 0x01 aconst_null 将null推 ...

  4. 转 gSOAP中使用TCP协议传输数据

    一  模型 TCP/IP是一个协议族(Internet protocol suite),包含众多的协议,传输控制协议(TCP)和网际协议(IP)分属不同的层次,是保证数据完整传输的两个基本的重要协议. ...

  5. openstack DVR的AIO 问题

    问题描述 : 创建public 网络,创建路由器,并且把路由器的gateway 设置指向网络后有下面几种错误 路由器对应的linux network namespace 建立起来了,但是里面并没有对应 ...

  6. dubbo-admin安装和使用

    更新下链接,不知道是不是这个项目合入Apache的缘故,链接都变成了https://github.com/apache/incubator-dubbo/ 按照常理,直接去 https://github ...

  7. 信号量学习 & 共享内存同步

    刚刚这篇文章学习了共享内存:http://www.cnblogs.com/charlesblc/p/6142139.html 里面也提到了共享内存,自己不进行同步,需要其他手段比如信号量来进行.那么现 ...

  8. Error Code: 2006 - MySQL 鏈嶅姟鍣ㄥ凡绂荤嚎

    将sql文件导入到mysql时候,就一直报这个错误. 我试过网上各种方法都行不通. 最后将以下一句运行了一下就能够了,并且没有重新启动mysql. SET GLOBAL max_allowed_pac ...

  9. 2&gt;MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _calloc 已经在 LIBCMTD.lib(dbgcalloc.obj) 中定义

    使用VS2010,在FireBreath里面调用ortp库和Speex库.编译的时候出现错误: 2>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _ca ...

  10. Lucene中TokenStream,Tokenizer,TokenFilter,TokenStreamComponents与Analyzer

    TokenStream extends AttributeSource implements Closeable: incrementToken,end,reset,close Tokenizer直接 ...