2013-11-27 24 views
2

Javascript的split函數在分割文字和分割從文件讀取的字符串時表現不同。Javascript在螞蟻中分裂的奇怪結果

我有一個字符,一個冒號和一個換行符以下文件:

 
$ cat line 
a: 
$ od -a line 
0000000 a : nl 
0000003 

當我運行以下構建文件:

<project name="project"> 
    <script language="javascript"> 
    <![CDATA[ 
     importClass(java.io.BufferedReader); 
     importClass(java.io.File); 
     importClass(java.io.FileReader); 

     var literal = "a:"; 
     var readline = new BufferedReader(new FileReader(new File("line"))).readLine(); 

     project.log("literal: '" + literal + "' -> " + literal.split(":").length); 
     project.log("readline: '" + readline + "' -> " + readline.split(":").length); 
    ]]> 
    </script> 
</project> 

我得到以下結果:

 
$ ant -f split.xml 
Buildfile: split.xml 
literal: 'a:' -> 2 
readline: 'a:' -> 1 

BUILD SUCCESSFUL 
Total time: 0 seconds 

分割文字返回2並分割從文件讀取的字符串返回1.

任何人都可以解釋這裏發生了什麼問題,我該如何解決它?

我對7月18日2012年

回答

3

literal是一個JavaScript字符串編譯Apache Ant的版本1.7.1進行了測試。 readline是一個Java字符串。兩種不同的拆分方法表現不同。 Java文檔中說...因此,尾隨的空字符串不包含在結果數組中。

+0

你說得對。 Java不可思議。多麼愚蠢的API錯誤。 – ceving