1

我正在尝试从地图中替换字符串中的某些字符

情况1

​map= ['O':'0', 'L':'1', 'Z':'2', 'E':'3']
"Hey".toUpperCase().toCharArray().each{
         print map.get(it,it)
     }

结果是

HEY

案例2:我不使用toCharArray()

"Hey".toUpperCase().each{
        print map.get(it,it)
    }

结果如预期

H3Y

所以我在使用时尝试了几种替代toCharArray()方法,访问该值的唯一方法是使用map."$it"

为什么我在使用时只能map."$it"用来访问我的地图toCharArray()

4

1 回答 1

4

因为您正在尝试使用charwhile 每个键从地图中获取一个值String,并且它们不等于:

assert !'E'.equals('E' as char)

$it有效,因为它被转换为字符串:

e = 'E' as char

assert "$e".toString().equals('E')

(注意toString()是需要的,否则比较会发生在StringGStringImpl不相等之间)

于 2015-09-24T00:55:16.710 回答