2014-03-19 46 views
2

我對將字符串寫入標準輸出的可移植方式感興趣,沒有在最終添加隱含換行符,理想情況下強制編碼爲UTF-8,可與如何將字符串寫入Javascript的標準輸出

  • jrunscript(來自任何JDK)
  • 犀牛
  • 的node.js

我當前的代碼嘗試檢測它正在運行,則使用特定於平臺的寫入方法:

if (typeof process !== "undefined") {  // assume node.js 
    var log = function(string) {process.stdout.write(string);}; 
    } 
    else if (typeof println == "undefined") { // assume rhino 
    var log = function(string) {java.lang.System.out.write(java.lang.String(string).getBytes("utf-8"));}; 
    } 
    else {         // assume jrunscript 
    var log = function(string) {java.lang.System.out.print(string);}; 
    } 
    log("X"); 
    log("Y"); 

應該導致:

XY 

可以這樣做的更好?

對於jrunscript,我一直使用函數print,但是它代表JDK-8021773在JDK-8中改變了它的行爲。

+0

我想你會*需要*平臺特定的代碼 – Bergi

+0

我在我的項目中有類似的代碼。請注意,你也需要在Nashorn上進行測試。 (Java 8捆綁了Nashorn,而不是Rhino。) –

+0

@SethTisue,謝謝你的提示。事實上,將JDK升級到8版讓我再次考慮這一點。此外,犀牛及其(之前的8)JDK風味已經需要在這方面加以區分。 – Gunther

回答

3

我有興趣編寫 字符串到標準輸出的便攜方式,無需換行隱含加入到結束,非常迫使 編碼設置爲UTF-8,與任一作品...

沒有,因爲JavaScript沒有「系統apis」。 JS核心是有限的,你需要使用JavaScript引擎運行的環境中可用的API。

我當前的代碼會嘗試檢測它正在運行,然後使用 平臺特定的寫入方法。但我寧願擺脫這一點。

這是你唯一能做的事情。

編輯:JavaScript規範在這裏:http://es5.github.io/它很短,有0標準輸出或標準輸入的概念,因爲沒有JavaScript標準庫。

+0

好的,謝謝。所以我會保留我的平臺區別碼,如問題所示。 – Gunther

相關問題