ruby 字符串格式化、进制转换、小数位数控制
2012-08-15 16:47
871 查看
第一:ruby 字符串格式化和进制转换
"%05d" % 123 结果是 "00123"
"%02X" % 10 结果是 "0A"
"%03x" % 10 结果是 "00a"
"%010x" % 10 结果是 "000000000a" (前缀9个0)
"%10x" %10 结果是 " a" (前缀9个空格)
可以看出 第一个数字是前缀,然后是长度,然后x表16进制,d表示10进制。
堪称奇技淫巧吧,但是ruby的奇技淫巧,用的很是地方,给开发带来了极大的效率,让语言优雅而简洁~
以上转载自:http://www.cnblogs.com/coderlee/archive/2008/04/08/1142704.html
ps:长度不是必填项。适用于十进制转换至16进制,格式化字符串
另:16进制转换至10进制的方法如下:
'ff'.to_i(16)
最后贴出自己写的ruby 实现ip转数字 数字转ip的代码,有很多地方待改进。
第二:小数位数控制
两种方法:
1. ruby的Kernal.sprintf()可以实现保留两位小数的方法,format是sprintf的alias。format(pattern, value):其中pattern表示要格式化形式,在这里我们用“%.2f”,表示保留小数点后2位数字,当然我们还可以写成“%05.2f”,表示整个字符串最少5位数(不包括小数点),如果value少于5位用”0”占位。
eg: "%0.2f"% 11.329 or format("%0.2f", 11.329)
2. 11.329.round(1) -----> 11.3 11.329.round(2) -----> 11.33
第三:转义字符
strstr = str.gsub('<', '<')
strstr = str.gsub('>', '>')
strstr = str.gsub(/['"]/, '"')
strstr = str.lstrip #去掉前后空格
strstr = str.delete("\n\r") #去掉换行符
strstr = str.delete(" ") #去掉tab
"%05d" % 123 结果是 "00123"
"%02X" % 10 结果是 "0A"
"%03x" % 10 结果是 "00a"
"%010x" % 10 结果是 "000000000a" (前缀9个0)
"%10x" %10 结果是 " a" (前缀9个空格)
可以看出 第一个数字是前缀,然后是长度,然后x表16进制,d表示10进制。
堪称奇技淫巧吧,但是ruby的奇技淫巧,用的很是地方,给开发带来了极大的效率,让语言优雅而简洁~
以上转载自:http://www.cnblogs.com/coderlee/archive/2008/04/08/1142704.html
ps:长度不是必填项。适用于十进制转换至16进制,格式化字符串
另:16进制转换至10进制的方法如下:
'ff'.to_i(16)
最后贴出自己写的ruby 实现ip转数字 数字转ip的代码,有很多地方待改进。
#数字转ip=》先将数字转换为16进制,然后拆分转十进制 def conver_ip(data) @str="%x" % data @str=@str.reverse # p @str,@str.length ip1=(@str[1]+@str[0]).to_i(16).to_s ip2=(@str[3]+@str[2]).to_i(16).to_s ip3=(@str[5]+@str[4]).to_i(16).to_s if @str.length <= 7 ip4=@str[6].to_i(16).to_s else ip4=(@str[7]+@str[6]).to_i(16).to_s end puts ip4+"."+ip3+"."+ip2+"."+ip1 end #ip转数字=》先将ip拆分转16进制,连接后转十进制 def ip_conver(str_ip) @ip_16='' str_ip.split('.').each do |k| k="%02x" % k @ip_16=@ip_16+k.to_s end puts @ip_16.to_i(16) end #测试通过 conver_ip('16777471') ip_conver('1.0.0.255')
第二:小数位数控制
两种方法:
1. ruby的Kernal.sprintf()可以实现保留两位小数的方法,format是sprintf的alias。format(pattern, value):其中pattern表示要格式化形式,在这里我们用“%.2f”,表示保留小数点后2位数字,当然我们还可以写成“%05.2f”,表示整个字符串最少5位数(不包括小数点),如果value少于5位用”0”占位。
eg: "%0.2f"% 11.329 or format("%0.2f", 11.329)
2. 11.329.round(1) -----> 11.3 11.329.round(2) -----> 11.33
第三:转义字符
strstr = str.gsub('<', '<')
strstr = str.gsub('>', '>')
strstr = str.gsub(/['"]/, '"')
strstr = str.lstrip #去掉前后空格
strstr = str.delete("\n\r") #去掉换行符
strstr = str.delete(" ") #去掉tab
相关文章推荐
- ruby奇技淫巧 之 字符串格式化和进制转换
- 转 ruby奇技淫巧 之 字符串格式化和进制转换
- JAVA中double格式化控制精度小数位数,float同理
- JAVA中double格式化控制精度小数位数,float同理
- ruby奇技淫巧 之 字符串格式化和进制转换
- C#double转化成字符串 保留小数位数, 不以科学计数法的形式出现(转)
- java中控制输出小数位数的方法
- JS 控制小数位数
- 在JSP中使用formatNumber控制要显示的小数位数
- 在c++中如何控制小数位数
- C#double转化成字符串 保留小数位数, 不以科学计数法的形式出现。
- 使用sprintf打印float并控制小数位数时引起的问题
- java中控制小数位数
- C#double转化成字符串 保留小数位数, 不以科学计数法的形式出现。
- 在JSP中使用formatNumber控制要显示的小数位数方法
- 格式化数字类型之保留固定小数位数
- delphi Edit 控制最大值,只能输入数字型 控制小数位数(转)
- Java中格式化小数—小数有效位数
- C#double转化成字符串 保留小数位数, 不以科学计数法的形式出现
- 只控制input框只能输入数字,并控制小数位数