将 seq[char] 转换为字符串
Converting a seq[char] to string
我的情况是 seq[char]
,像这样:
import sequtils
var s: seq[char] = toSeq("abc".items)
将 s
转换回字符串(即 "abc"
)的最佳方法是什么?用 $
进行字符串化似乎得到 "@[a, b, c]"
,这不是我想要的。
import sequtils, strutils
var s: seq[char] = toSeq("abc".items)
echo(s.mapIt(string, $it).join)
Join 仅适用于 seq[string]
,因此您必须先将其映射到字符串。
最有效的方法是自己编写程序。
import sequtils
var s = toSeq("abc".items)
proc toString(str: seq[char]): string =
result = newStringOfCap(len(str))
for ch in str:
add(result, ch)
echo toString(s)
您也可以尝试使用强制转换:
var s: seq[char] = @['A', 'b', 'C']
var t: string = cast[string](s)
# below to show that everything (also resizing) still works:
echo t
t.add('d')
doAssert t.len == 4
echo t
for x in 1..100:
t.add('x')
echo t.len
echo t
我的情况是 seq[char]
,像这样:
import sequtils
var s: seq[char] = toSeq("abc".items)
将 s
转换回字符串(即 "abc"
)的最佳方法是什么?用 $
进行字符串化似乎得到 "@[a, b, c]"
,这不是我想要的。
import sequtils, strutils
var s: seq[char] = toSeq("abc".items)
echo(s.mapIt(string, $it).join)
Join 仅适用于 seq[string]
,因此您必须先将其映射到字符串。
最有效的方法是自己编写程序。
import sequtils
var s = toSeq("abc".items)
proc toString(str: seq[char]): string =
result = newStringOfCap(len(str))
for ch in str:
add(result, ch)
echo toString(s)
您也可以尝试使用强制转换:
var s: seq[char] = @['A', 'b', 'C']
var t: string = cast[string](s)
# below to show that everything (also resizing) still works:
echo t
t.add('d')
doAssert t.len == 4
echo t
for x in 1..100:
t.add('x')
echo t.len
echo t