他们之间是可以通过to_sym 和 to_s 之间来转换的
:username.to_s
username
'username'.to_sym
:username
2, 相同的符号代表的一定是同一个对象,相同的字符串代表的不一定是同一个对象
这个是最大的区别,符号是不可更改的,字符串是可以修改的、
3,性能上,符号更加占优
正是因为符号不可变,而字符串变量必须具有含有修改其类容的功能,所以系统开销比较大,所以一般遇到不需要修改的文本信息时,建议使用符号。
查询核心模块Kernel API可知:如果是Float类型则通过Kernel.Float(字符串)判断,这里不能转为浮点数则会抛出异常。你只需再捕获一下输出自己的信息就行。
可以使用正规表达式中的 \p{}, utf编码属性(有许多,具体有有哪些,分别代表什么,你得去查一下)汉字的p 属性好像是 Han
实例如下: 'abc汉字abc' =~ /\p{Han}/, 我在ruby1.9.2的irb返回为3, 说明是可以的