我想对字符串中的字符执行不同的操作,例如映射或反向。作为第一步,我想将字符串转换为序列。
给出像“ab”这样的字符串。
如何获得类似@['a','b']
的序列?
"ab".split("")
返回整个字符串。
之前我见过"ab".items
的示例,但这似乎不起作用(不推荐使用了吗?)
答案 0 :(得分:3)
items
是一个迭代器,而不是一个函数,所以你只能在几个特定的上下文中调用它(比如for
循环)。但是,您可以使用toSeq
模块(docs)中的sequtils
轻松地从迭代器构造序列。 E.g:
import sequtils
echo toSeq("ab".items)
答案 1 :(得分:3)
您还可以使用列表理解:
[FromBody]
部件为[FromUrl]
。
答案 2 :(得分:3)
这是使用map
中的sequtils
和=>
中的future
(在Nim devel上重命名为sugar
)的另一种变体:
import sequtils, sugar
echo "nim lang".map(c => c)
输出@['n', 'i', 'm', ' ', 'l', 'a', 'n', 'g']
。
答案 3 :(得分:2)
一个字符串已经是一个字符序列:
assert "ab" == @['a', 'b']
import sequtils
assert "ab".mapIt(it.ord) == @[97, 98]
答案 4 :(得分:0)
由于string
的实现方式类似于seq[char]
,因此简单的类型转换就足够了,即
echo cast[seq[char]]("casting is formidable")
这显然是最有效的方法,因为它只是强制转换,尽管此处答案中概述的其他一些方法可能已由编译器对此进行了优化。