用值替换列表中的空字符串
Replace Empty Strings In A List With A Value
如果我有一个列表
("foo" "bar" "" "baz")
我需要将任何 "" 更改为 "biz",有什么好的方法可以做到这一点?
(map #(if (empty? %) "biz" %)
'("foo" "bar" "" "baz"))
为了完整起见,这里有一个使用更专业的内置函数的替代方法:
(replace ; Replace all instances of...
{"" "biz"} ; "" with "biz"...
'("foo" "bar" "" "baz")) ; in the list
这也是 returns 一个惰性序列。
请注意,作为第一个参数给出的映射可以包含多个条目。如果您有多个替代品,我肯定会选择 replace
而不是显式的 map
。
replace
actually just uses map
behind the scenes,但使用映射查找而不是相等性检查来进行替换。我希望他们对一个替换进行类似的预制,但是 replace
不止一次更快,因为它不需要像手动 =
那样对所有替换进行线性搜索检查。
如果我有一个列表
("foo" "bar" "" "baz")
我需要将任何 "" 更改为 "biz",有什么好的方法可以做到这一点?
(map #(if (empty? %) "biz" %)
'("foo" "bar" "" "baz"))
为了完整起见,这里有一个使用更专业的内置函数的替代方法:
(replace ; Replace all instances of...
{"" "biz"} ; "" with "biz"...
'("foo" "bar" "" "baz")) ; in the list
这也是 returns 一个惰性序列。
请注意,作为第一个参数给出的映射可以包含多个条目。如果您有多个替代品,我肯定会选择 replace
而不是显式的 map
。
replace
actually just uses map
behind the scenes,但使用映射查找而不是相等性检查来进行替换。我希望他们对一个替换进行类似的预制,但是 replace
不止一次更快,因为它不需要像手动 =
那样对所有替换进行线性搜索检查。