!〜方法对Ruby中的String有什么作用

Abd*_*bdo 3 ruby

来自@ sawa的回答:https://stackoverflow.com/a/21892359/226255

怎么!~办?

例:

re = /[^\d.,]/
"0.0687987167581341,0.120311605902415,89.8399554017928,198.151088713489" !~ re
Run Code Online (Sandbox Code Playgroud)

我在StringRegexp中找不到任何文档

mde*_*tis 5

该方法!~是的逆=~,即!(=~).从Ruby Object#!~文档:

如果两个对象不匹配(使用=〜方法),则[obj!~other]返回true,否则返回false.

因此,由于String#=~执行字符串/正则表达式匹配,如果匹配则返回第一个匹配的索引,nil否则,如果匹配则String#!~返回,否则返回.falsetrue

  • 从技术上讲,`= ~`返回指向模式第一次出现的字符串的索引,其中`Fixnum`是真实的,否则返回`nil`(当然是假的). (2认同)