Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java子字符串缺少字符?_Java_Syntax_Numbers_Substring - Fatal编程技术网

Java子字符串缺少字符?

Java子字符串缺少字符?,java,syntax,numbers,substring,Java,Syntax,Numbers,Substring,我对以下代码有问题,甚至不知道从哪里开始: System.out.println("Subject: " + message.getSubject()); subjectPack = message.getSubject().replaceAll("([,|!|@|$|&|%|^|*|;|:|<|>|\"|\'|(|)|/|\\|+])", "").replaceAll("[.](?![\\w]{2,4}$)",

我对以下代码有问题,甚至不知道从哪里开始:

                System.out.println("Subject: " + message.getSubject());
                subjectPack = message.getSubject().replaceAll("([,|!|@|$|&|%|^|*|;|:|<|>|\"|\'|(|)|/|\\|+])", "").replaceAll("[.](?![\\w]{2,4}$)", "").replaceAll("( )+|(\t)", " ");
                System.out.println("Subject Line Length: " + subjectPack.length());
                System.out.println("Subject: " + subjectPack);

                subjectPack = subjectPack.toUpperCase().substring(message.getSubject().lastIndexOf("#")+1).toUpperCase();
                System.out.println("PO Length: " + subjectPack.length());
                System.out.println("PO: " + subjectPack);
              subjectPack = subjectPack.substring(0,6);

您正在从
subjectPack
提取采购订单,但从
message.getSubject()



另一方面,您不需要调用
.toUpperCase()
两次-无论是在
之前还是之后。substring()
操作就足够了。

如果
subjectPack
的长度只有5,那么您就无法访问索引位置6。对,但它应该是160753,不是60753。为什么您要根据
消息获取
lastIndexOf
。getSubject()
而不是
subjectPack
subjectPack
没有“:”,但您使用的是
消息.getSubject().lastIndexOf(#“)+1
消息。getSubject()
没有分号。抱歉误解;这是因为您去掉了冒号“:”(正如@johnnymop指出的),但代码没有更新“#”的索引位置。字符串长度缩短了1,因此缺少第一个字符(本例中恰好是“1”)。这就是答案。谢谢
Subject: FW: Freight shifted on Turbana Load Po#160753
Subject Line Length: 44
Subject: FW Freight shifted on Turbana Load Po#160753
PO Length: 5
PO: 60753
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String ind
ex out of range: 6
        at java.lang.String.substring(Unknown Source)
        at picRead.PictureReader.sendmsg(PictureReader.java:191)
        at picRead.PictureReader.main(PictureReader.java:116)
    subjectPack.substring(message.getSubject().lastIndexOf("#")+1).toUpperCase();
//                        ^ you determine the starting position here
//  ^ you are extracting from this string

// "FW: Freight shifted on Turbana Load Po#160753"
// "FW Freight shifted on Turbana Load Po#160753"
//  you are extracting from ...            ^ this position