將seq [char]轉換為字符串

問題描述 投票:13回答:3

我有一個seq[char]的情況,像這樣:

import sequtils
var s: seq[char] = toSeq("abc".items)

s轉換回字符串(即"abc")的最佳方法是什么?用$進行字符串化似乎給了"@[a, b, c]"捕鱼游戏能赚钱的,這不是我想要的。

nim
3個回答
11
投票

最有效的方法是編寫自己的程序。

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)

6
投票
import sequtils, strutils
var s: seq[char] = toSeq("abc".items)
echo(s.mapIt(string, $it).join)

加入僅適用于seq[string]捕鱼游戏能赚钱的,因此您必須先將其映射到字符串。


0
投票

您也可以嘗試使用強制轉換:

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

推薦問答