ruby评价以及备用笔记

ruby是一门写起来让人感觉舒适的脚本语言,但是因为它语法过于灵活而且误导人写太多的函数,内存管理不算好,容易把人带进沟里去,我已经换用perl了


 

 

OpenURI:http下载库,注意设置header;io = URI.open(link, hash),这里的hash约等于http发送get/post请求时的header,如果在hash里指定 :encoding = 'utf-8',则open-uri会以utf8编码读取下载的流,否则默认按ascii编码来读取。

socket (windows运行)的读写,TCPServer和TCPSocket。Socket < BasicSocket < IO,而close_write和read(Int)都是socket继承自IO的函数。

Set[] 集合: require 'set'; a = Set[3,4,5]; a.to_a # => [3,4,5];  [5,6,7].to_set #=> #<Set: {5, 6, 7}>; a.include?(5) #=> true; a << 2; #=> #<Set: {3, 4, 5, 2}>; a.delete(5)  #=> #<Set: {3, 4, 2}>

JSON库基本用法(Psych yaml库的用法类似);

Thread.new {}; 多线程; Mutex和Queue的用法参见“runoob菜鸟教程”。

类似于Python的if __name__ == "main" 的如本文件为启动脚本则执行的 if ($0 == __FILE__)用法,和ARGV:启动参数数组

简单的正则表达式用法:注意是否开启多行模式,和替换换行符

 

text0 = text0.gsub("\r", '').gsub("\n", '')
h = '<div class="el">'
b = '</div>'
re = /#{h}.*?#{b}/
elems = text0.scan(re)
puts elems.size, elems[0]
a = /(\d+)(abc)de/.match('12abcdef') # => #<MatchData "12abcde" 1:"12" 2:"abc">
a.to_a #=>  ['12', 'abc']

 

Nokogiri:xml解析库;

SQLite3: sqlite3数据库的用法,

  .results_as_hash: 把结果以哈希形式输出;

  sql.query('begin'); sql.query('commit'):SQL事务;

  sqlite的转义用法:sql.query('update table set a = ? where b = ?', [a_value, b_value]);

 

ERB:ruby的类似于php的模板引擎的用法,ERB.new(string).result(binding);ERB的模板用法见官方文档。

String:index(pos, startpos)用法;

.encode('utf-8', 'gbk', {:invalid => :replace, :undef => :replace, :replace => '?'})用法(见代码)

ruby元编程的基本用法:Kernel/Object.send(:method, args);  require和load的用法;

获取脚本自身完整路径的方法:File.expand_path(File.dirname(__FILE__))

 

Nokogiri的部分用法见以下,注意Nokogiri::XML用来解析常规的xml,Nokogiri::HTML支持html里的<image>、<input>等没有结束标记的标签;Nokogiri的参数'utf-8'在windows上最好强制指定,要不然Nokogiri会以windows终端的GBK编码来解析。

Nokogiri有xpath('./node')的用法,识别<a href="link">text</a>是用xpath('./a/@href').text。

Nokogiri还有.to_html;.to_s;.text;.value用法,代码暂时找不到了,建议结合实际使用。

用Nokogiri的时候最好逐步调试,如果nokogiri找不到元素,有时候会抛出异常,有时候会返回nil。

posted @   licre666  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示