Javascript 的 split
函数在分割文字和分割从文件读取的字符串时表现不同。
我有以下带有字符、冒号和换行符的文件:
$ cat line a: $ od -a line 0000000 a : nl 0000003
And when I run the following build file:
<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。
有人可以解释一下这里出了什么问题以及如何解决它吗?
我使用 2012 年 7 月 18 日编译的 Apache Ant 1.7.1 版本对其进行了测试。
最佳答案
literal
是一个 JavaScript 字符串。 readline
是一个 Java 字符串。两种不同的分割方法的行为不同。 Java 文档说...因此尾随空字符串不包含在结果数组中。
关于java - Ant 中 Javascript 拆分的奇怪结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20244995/