ruby字符串格式化、进制转换、小数位数控制

目录

ruby 字符串格式化和进制转换

"%05d" % 123 结果是 "00123"
"%02X" % 10 结果是 "0A"
"%03x" % 10 结果是 "00a"
"%010x" % 10 结果是 "000000000a" (前缀9个0)
"%10x" %10 结果是 "         a"  (前缀9个空格)
'ff'.to_i(16)

ruby实现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')

小数位数控制

ruby的Kernal.sprintf()可以实现保留两位小数的方法,format是sprintf的alias。format(pattern, value):其中pattern表示要格式化形式,在这里我们用“%.2f”,表示保留小数点后2位数字,当然我们还可以写成“%05.2f”,表示整个字符串最少5位数(不包括小数点),如果value少于5位用”0”占位。

"%0.2f"% 11.329    
format("%0.2f", 11.329)    
2. 11.329.round(1)  # ----->  11.3      
11.329.round(2)   #----->  11.33

转义字符

strstr = str.gsub('<', '&lt;')  
strstr = str.gsub('>', '&gt;')  
strstr = str.gsub(/['"]/, '&quot;')  
strstr = str.lstrip                            #去掉前后空格  
strstr = str.delete("\n\r")                #去掉换行符  
strstr = str.delete(" ")                    #去掉tab

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦