javascript - javascript 和 java 操作文件中的字符串列表值不同

标签 javascript java string arraylist var

美好的一天,

在我的 java 操作文件中,我有一个列表:

 protected ArrayList< String > deletedCorpRegisteredAccountRefNo = new ArrayList< String >( );

然后我在这个 ArrayList 中放入一些数据,并将其打印出来:

   System.out.println( "deletedCorpRegisteredAccountRefNo : "+
                deletedCorpRegisteredAccountRefNo );

结果显示正确:

deletedCorpRegisteredAccountRefNo : [0000000000000234324, 0000000000015422629]

然后我转到我的 jsp 和 javaScript 函数,我尝试将此 ArrayList 值分配给 var 调用 refNoList,并打印出:

var refNoList = ${actionBean.deletedCorpRegisteredAccountRefNo};
console.log(refNoList);

我预计我会看到我的浏览器控制台会打印出类似于我在 Java System.out.println() 中看到的内容,但我得到了另一个结果:

[80084, 15422629]

15422629 仍然可以接受,因为 JavaScript 可能会自动 trim 0。但不明白为什么0000000000000234324会变成80084,这是完全不同的。

我尝试用谷歌搜索根本原因,但没有找到,我想我在谷歌中问了错误的问题。

请多多指教。

最佳答案

如果 JavaScript 数字以零开头,则可以将其解释为八进制值。并且

var x = 0234324;
console.log(x);

这会写出 80084,因为在十进制中,这与八进制中的 234324 是相同的值。

您需要 trim 字符串中的尾随零,它就会按照您想要的方式工作。

<小时/>

其他数字定义

在 JavaScript 中,数字可以解释为二进制、八进制、十进制或十六进制。这里有一个不同文字的小列表:

123         - normal decimal
0123        - octal: decimal value is 83
0x123       - hexadecimal: decimal value is 291
0o123       - octal: decimal value is 123
0b101       - binary: decimal value is 5

第二个示例 (0123) 的问题在于,仅在可能的情况下才将其解释为八进制。例如。 09123081 将被解释为十进制。这个故事的寓意是,你不应该依赖这种行为,如果你需要八进制,请明确使用 0o,如果你需要小数,请 trim 那些零。

<小时/>

解决问题

无论如何,要将数字解析为十进制,您只需将基数值作为参数提供给parseInt(number, radix)即可:

var x = "000000123";
console.log(parseInt(x, 10)); // prints out 123

关于javascript - javascript 和 java 操作文件中的字符串列表值不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32008037/

相关文章:

javascript - 表单中的密码,Foundation 5 (ZURB)

Java mongodb 连接到远程服务器

javascript - Dhtmlx date_scale 从未在 Angular 中被调用过?

java - 服务器-客户端这里出了什么问题?

java - 使用多个键定位集合中的对象

c - char* const 和 const char* 有什么区别?

C++ 调试断言失败的字符串数组

python - 如何对数据进行分类以获得树状结构

javascript - html 5 代码在使用 phonegap 的 android 上不起作用

javascript - 确定动态最小/最大值的数字百分比