2012-03-19 28 views
13

我希望這將是直線前進的使用顏色在斯卡拉控制檯

Console.out.println("Test " + Console.RED + " RED " + Console.RESET) 

但沒有任何反應,而是我看到了控制字符(例如"\033[31m")。我嘗試從sbt(sbt run)和普通的IDEA運行配置運行...

+1

我不知道這是可能的與斯卡拉+1文化。 – 2012-03-19 18:40:15

+0

請參閱http://stackoverflow.com/questions/27229533/how-to-colorize-the-standard-output-in-scala-with-ansi-codes以獲取Console.RED等的替代方法。 – 2014-12-01 13:33:41

回答

10

它適用於如果您的控制檯支持顏色。我只是通過putty在linux系統上嘗試過它,並獲得了預期的結果。

編輯:如果你想通過Windows來做到這一點,你可以使用Ansicon在標準命令提示符下提供顏色。

+1

好的,這似乎是IntelliJ IDEA控制檯的問題。雖然IDEA的sbt插件爲sbt本身提供了顏色,但似乎不支持scala.Console的ANSI控制代碼。我嘗試從一個正常的bash運行,它的工作原理。 – 2012-03-19 15:13:35

6

是的,上面的工作很好。 另外我發現,這是很整齊這個庫包了那些作爲String方法「.red」,像https://github.com/ktoso/scala-rainbow

大量紅寶石的寶石在那裏,這樣做的,但沒有這麼多斯卡拉呢。 .. :-)

1

如果你使用Scala的2.11+你可以使用這個庫:https://github.com/backuity/ansi-interpolator

它採用了宏在編譯的時候改變你的字符串,並支持嵌套:

ansi"Text containing ansi tags such as %bold{bold text} or %underline{can be %yellow{nested}}" 

// you can also use string interpolation: 
val someMsg = "hey" 
ansi"My msg %bold{in bold: $someMsg}"