Java语法分析完整性检查
我试图从Java语法分析完整性检查,java,integer,parseint,Java,Integer,Parseint,我试图从字符串数组元素解析int。这是我的密码: String length = messageContents[k].replace("Content-Length:", "").replace(" ", ""); System.out.println("Length is: " + length); int test= Integer.parseInt(length); System.out.println返回以下内容:长度为:23 但是,当我试图将字符串解析为int时,会抛出java.l
字符串数组元素解析int
。这是我的密码:
String length = messageContents[k].replace("Content-Length:", "").replace(" ", "");
System.out.println("Length is: " + length);
int test= Integer.parseInt(length);
System.out.println
返回以下内容:长度为:23
但是,当我试图将字符串
解析为int
时,会抛出java.lang.NumberFormatException
java.lang.NumberFormatException: For input string: "23"
我有点困惑为什么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
此字符串中可能有不可见的字符
我的想法是:使用带有模式/匹配器的正则表达式删除字符串中的所有非数字,然后对其进行解析。尝试以下变体:
int test= Integer.parseInt(length.trim());
我注意到第一行有一个尾随“.”。也许是复制过去的错误?啊,是的,忽略它。复制粘贴错误。谢谢:)“我只能假设其中有其他字符在阻止它,但我一辈子都看不到它。”1)在println
语句中的值周围加上单引号。2) System.out.println(“这根字符串有多长?”+length.length())谢谢你,安德鲁。长度是:23长度的长度是:3,那么额外的字符在哪里…它没有出现在输出中?对于Length.getBytes(),您得到了什么?我希望(字节[])[50,51]通常我会这样做。但是这个问题让我非常感兴趣,想知道为什么额外的字符(不管它是什么)没有出现在System.out中。它可能是那些不可打印的控制字符之一,您只能通过发出System.out.println(Arrays.toString(length.getBytes())来找到代码>[50,51,13]-我认为13是回车符?13确实是回车符/换行符或\n
字符。这就对它进行了排序,非常感谢!我假设字节13被修剪后算作空白?不确定。但是trim()
将去除字符串中大部分不可见的内容。