我试图替换字符串中的某些字符来自地图
案例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()
来访问我的地图?
答案 0 :(得分:4)
因为您尝试使用char
从地图获取值,而每个键都有String
,并且它们不等于:
assert !'E'.equals('E' as char)
$it
有效,因为它被转换为String:
e = 'E' as char
assert "$e".toString().equals('E')
(请注意toString()
是必需的,否则String
和GStringImpl
之间的比较将发生在不相等的位置