2017-04-21 24 views
1

如果您打印在控制台中的字符串,你会得到它不包括引号,像这样阶的println字符串引号

scala> "asd" 
res21: String = asd 

这是伟大的,但我有case类的某些列表正在打印,我想复制到稍后粘贴到某处。问题是,它不会编译新鲜复制,因为"丢失

是否有一种简单的方法在控制台中用引号输出字符串?

为了进一步澄清,我想下面的

scala> "asd" 
res21: String = "asd" 

谢谢!

+1

亚扪人做了报价。 REPL有一个问题https://github.com/scala/bug/issues/8603 –

回答

2

你可以在你的情况应该重写toString后,用一个空的空间尝试:

case class MyClass(a: String, b: String) { 
    override def toString = s"MyClass(a = \"$a\", b = \"$b\")" 
} 

a =b =都只是为了清楚(你可以将其删除如果你不需要它们),但它们不会影响粘贴的代码。

+1

不幸的是,上述不起作用。有一个错误,请参阅https://issues.scala-lang.org/browse/SI-6476 s“”“MyClass(a = \”$ a \“,b = \”$ b \“)”“ “ 将工作 – TRuhland

-2

尝试:

val x = """"asd"""" 

这三重报价插值可以是你要寻找的(那么你添加更多的报价做你需要做的)。

+0

这改变了字符串的值,而不是如何打印出来。如果您可以将引号添加到字符串中,也可以将它们转义:'val x =“\”asd \“”'。 –

+0

它不是我想要在字符串中引号,而是我想要的字符串,否则会打印出不带引号的** **他们 – JSelser

+0

好的。抱歉。误解。你基本上想以某种方式覆盖'String'类型的'toString'方法。 – mfirry

1

您可以将字符串

scala> "asd " 
res11: String = "asd " 
+0

不需要字符串插值。 –

+0

你说得对。我会编辑我的答案:) – vgudzhev

+0

虽然这是一个很好的窍门,但我没有意识到它(我必须测试它)!在IntelliJ电子表格中不起作用,但是,不确定这是否是REPL的特性。 –