2017-04-21 28 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的特性。 –