好吧......我有这个.txt文件(UTF-8)
4661,SOMETHING,3858884120607,24,24.09
4659,SOMETHING1,3858884120621,24,15.95
4660,SOMETHING2,3858884120614,24,19.58
Run Code Online (Sandbox Code Playgroud)
而这段代码
FileInputStream fis = new FileInputStream(new File(someTextFile.txt));
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
BufferedReader in = new BufferedReader(isr);
int i = 0;
String line;
while((line = in.readLine()) != null) {
Pattern p = Pattern.compile(",");
String[] article = p.split(line);
// I don't know why but when a first line starts with
// an integer - article[0] (which in .txt file is 4661)
// becomes someWeirdCharacter4661 so I need to trim it
// *weird character is like |=>| …Run Code Online (Sandbox Code Playgroud) 我正在创建一个基于Web的应用程序,我有文本字段,其中值存储为字符串.问题是某些文本字段要解析为整数,你可以在字符串中存储比在int中更大的数字.我的问题是,确保将String编号解析为int而不会出错的最佳方法是什么.
<div style="left: 100%"></div>
parseInt($("div").css("left"), 10);
Run Code Online (Sandbox Code Playgroud)
当我试图获得价值时left,一些浏览器会以像素为单位给出结果,有些以%为单位.
这是一个例子 http://jsfiddle.net/WTt4s/1/
谷歌浏览器提供百分比值,而IE9则提供像素值.
如何在所有浏览器中获得相同的值(px或%)?
我正在尝试int从String数组元素中解析一个.这是我的代码:
String length = messageContents[k].replace("Content-Length:", "").replace(" ", "");
System.out.println("Length is: " + length);
int test= Integer.parseInt(length);
Run Code Online (Sandbox Code Playgroud)
将System.out.println返回如下:长度为:23
但是,当我尝试解析String成一个时int,一个java.lang.NumberFormatException被抛出;
java.lang.NumberFormatException: For input string: "23"
Run Code Online (Sandbox Code Playgroud)
我有点困惑23如何解析成一个int.我只能假设其中有一些其他角色正在阻止它,但我不能在我的生命中看到它.
有什么建议?
谢谢
更新
Despite the String length having only two characters, Java reports its length as three:
Length is: '23'
Length of length variable is: 3
length.getBytes = [B@126804e
Run Code Online (Sandbox Code Playgroud) 在IE8中发现一个奇怪的事情:
parseInt('01')
//1
parseInt('02')
//2
parseInt('03')
//3
/*...*/
parseInt('07')
//7
parseInt('08')
//0 !!!
parseIntr('09')
//9 ok
Run Code Online (Sandbox Code Playgroud)
有人可以澄清吗?
我有以下两个parseInt(),我不太清楚为什么他们给了我不同的结果:
alert(parseInt(0.00001)) 显示0;
alert(parseInt(0.00000001)) 显示1
我的猜测是,由于parseInt函数需要字符串参数,它把0.00001为""+0.00001是"0.00001",因此,第一次警报将显示0parseInt函数后.对于第二个陈述,""+0.00000001将是"1e-8",其parseInt将是1.我对么?
谢谢
我想做一些相对简单的事情.我有这种格式的日期dd/MM/yyyy例如:
var newDate = "?11?/?06?/?2015";
Run Code Online (Sandbox Code Playgroud)
我想将它转换为约会.
此代码仅适用于Chrome和Firefox:
new Date(newDate)
Run Code Online (Sandbox Code Playgroud)
在IE11中,我得到了 Nan
所以我想这样做:
var parts = newDate.split("/");
var year = parts[2].trim();
var month = parts[1].trim();
var day = parts[0].trim();
var dt = new Date(Number(year), Number(month) - 1, Number(day));
Run Code Online (Sandbox Code Playgroud)
哪个应该有效,但我遇到了一个非常奇怪的错误.
如果您尝试此代码:
function myFunction() {
var newDate = "?11?/?06?/?2015";
var parts = newDate.split('/');
var year = parts[2].trim();
var a = year;
var b = Number(year);
var c = parseInt(year, 10);
var d = parts;
var n = a + "<br>" + b + …Run Code Online (Sandbox Code Playgroud)这个问题与另一个问题类似;但是,我想了解为什么会这样。
下面的代码:
console.log((parseInt('0xdeadbeef', 16) & parseInt('0x000000ff', 16)).toString(16));
console.log((parseInt('0xdeadbeef', 16) & parseInt('0x0000ff00', 16)).toString(16));
console.log((parseInt('0xdeadbeef', 16) & parseInt('0x00ff0000', 16)).toString(16));
console.log((parseInt('0xdeadbeef', 16) & parseInt('0xff000000', 16)).toString(16));
console.log((parseInt('0xdeadbeef', 16) & parseInt('0x000000ff', 16)).toString(16));
console.log((parseInt('0xdeadbeef', 16) & parseInt('0x0000ffff', 16)).toString(16));
console.log((parseInt('0xdeadbeef', 16) & parseInt('0x00ffffff', 16)).toString(16));
console.log((parseInt('0xdeadbeef', 16) & parseInt('0xffffffff', 16)).toString(16));
Run Code Online (Sandbox Code Playgroud)
返回:
ef
be00
ad0000
-22000000
ef
beef
adbeef
-21524111
Run Code Online (Sandbox Code Playgroud)
当我对 .string(16) 的期望是:
ef
be00
ad0000
de000000
ef
beef
adbeef
deadbeef
Run Code Online (Sandbox Code Playgroud)
这是怎么回事?
预先感谢您的帮助。
感谢以下回复者和评论者,以及以下来源:
下面是一个解决方案,它通过提供实用函数来将 radix-16 32 位数字与有符号 32 位整数相互转换:
// Convert 'x' to …Run Code Online (Sandbox Code Playgroud) 我一直parseInt()在 Javascript 中使用该函数而不传递 radix 参数。根据此处的 MDN 文档,声明不提供此参数可能会导致不可预测的行为。
始终指定此参数以消除读者混淆并保证可预测的行为。
有人可以通过一些代码示例澄清这种不可预测的行为意味着什么吗?
System.out.println(Integer.parseInt("7FFFFFFF", 16)); //this is ok.
System.out.println(Integer.parseInt("FFFFFFFF", 16)); //this throws Exception
System.out.println(Integer.valueOf("FFFFFFFF", 16)); //this throws Exception
Run Code Online (Sandbox Code Playgroud)
当我尝试使用 parseInt 或 valueOf 方法将十六进制数转换为整数类型的负数时,该方法会为负数抛出 NumberFormatException。我在任何地方都找不到答案。