[英]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.