首页 > 解决方案 > 如何从字符串中提取随机字符?

问题描述

我有一个字符串列表:

thzJqGVnDxGzyUPZ8r5z
4JfDZijTxDMKBANKPvw1
t7X5C4Nubv8oGIcPEhIc
ZKwBEZBC5IDfm6atAzTG
gIZRkF6XvlOEI8GI2T8l

我希望从每个字符串中随机提取十个字符。

例如,输出应该是这样的(注意顺序是无关紧要的——只要它是一个样本):

tzJqVDGyZz
fDjTDKAKw1
t7X58oGIhI
ZKwBEatzTG
gIZ8GI2T8l

有没有一种简单的方法可以实现这一目标?

注意:不应该有替换(即一旦一个字符被选中,它就不能被替换和再次选中)。

如果字符串包含多个任何字符的实例,则应将每个字符视为独立的/单独的。

例如:字符串AABBCCDDEE1122334455可以有一个有效的结果AABB44DD2E

结果永远不可能,因为这将包括原始字符串中不存在AAABB44DD2的附加内容。A

标签: r

解决方案


您可以使用utf8ToInt+sample

sapply(s,
    function(v) intToUtf8(utf8ToInt(v)[sort(sample(nchar(v), 10))]),
    USE.NAMES = FALSE
)

这给出了类似的结果

[1] "hJnDxGzUPr" "ZjTxAKPvw1" "7C4vIcEhIc" "ZKBEZBImtz" "gIRkvlE2T8"

如果你不关心字符之间保持相同的相对顺序,你可以sort在上面的代码中省略


推荐阅读