繁体   English   中英

Java子串缺少字符?

[英]Java Substring Missing Character?

我的以下代码有问题,我不确定从哪里开始:

                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);

它可以很好地处理除此示例以外的其他几个示例。为什么要踢“ 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中提取采购订单, subjectPack message.getSubject()确定起始位置

    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

附带说明:您不需要两次调用.toUpperCase() -在.substring()操作足够之前或之后。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM