如何从writeStream中获取没有撇号的括号?

时间:2014-10-21 18:53:04

标签: quotes smalltalk squeak

我试图从 wirteStream 中取回我的brakets。遗憾的是,writeStream在括号之前和之后设置了两个标点符号(撇号)。

有人可以帮助我吗?我在 printOn 的类String中找到了这个错误,主要是在 storeOn 中。

你有想法解决它吗?我在RegEx上想过......但也许有人有另一种方法或解决方案。

| stream |
'()' printOn: (stream := '' writeStream).
stream contents = '()'.

此致 bartak。

2 个答案:

答案 0 :(得分:3)

这是因为String' #printOn:明确调用#storeOn:

printOn: aStream 
    "Print inside string quotes, doubling inbedded quotes."

    self storeOn: aStream

你可以反过来做到这一点:

(stream := '' writeStream) nextPutAll: '()'.

答案 1 :(得分:2)

那是因为String>>printOn:会将“字符串打印为字符串”,即它将再次引用 。解决方案:请勿使用#printOn:,而应使用Stream>>nextPutAll:Stream>>print:

<强>澄清

#print应该发送到流,而不是ByteString

'' writeStream print: '()'.