【发布时间】:2017-07-29 21:09:05
【问题描述】:
我想做字符串替换。使用 gsub 或 tr 我可以提供单个输入字符并将其映射到单个输出值,但我想基于多个映射创建多个输出字符串:
swap = {
'a' => ['$', '%', '^'],
'b' => ['3'],
'c' => ['4', '@'],
}
对于输入字符串'abc',我应该得到以下输出字符串:
'$34''$3@''%34''%3@''^34''^3@'
对于任意数量的输入和映射,是否有一种简单的方法可以做到这一点?实际上,它可能是大约 10 个输入和最多 3 个映射,通常只有一个。
【问题讨论】:
-
它就像拥有三个嵌套循环(枚举所有组合)一样简单(在这种情况下),并且在最里面的循环中调用 tr/gsub。
-
我承认,尽管至少进行通用实现并非易事。不过试试看吧。
-
Robin,感谢您选择我的答案,但您确实应该等待一段时间(也许 2 多个小时),然后再授予绿党。快速选择可能会阻止其他答案,并且,对于仍在研究答案的其他人来说,这是不礼貌的。不用着急。请考虑删除复选标记并稍后再决定。