我在Java中使用substring函数,我发现如果子字符串中的第一个字符为零,则从新字符串中删除它。有办法防止这种情况吗?
以下是我遇到问题的代码:
ccode = actnum.substring(1,2);
ccode和actnum都被定义为字符串。如果需要更多代码,请告知。
答案 0 :(得分:13)
String.substring()
方法不检查子字符串的内容,因此您所描述的内容可能是代码中的错误。如果您想要一些帮助故障排除,可以发布重现问题所需的最少量代码。
鉴于更新和评论中给出的代码和信息,这是我所期望的:
String actnum = "03KL352"; /* Maybe actnum is actually entered via a JSP. */
System.out.println(actnum); /* Prints 03KL352 */
String ccode = actnum.substring(1,2); /* Assign characters [1,2) to ccode. */
System.out.println(ccode); /* Prints 3 */
请记住,Java的字符串索引是从零开始的。第一个字符位于索引0,下一个字符位于索引1.此外,substring
方法采用两个字符索引;第一个是包含在新的子字符串中,第二个是 not -it是新子字符串中最后一个字符后面的字符的索引。因此,新子字符串的长度为end - start
。
答案 1 :(得分:1)
根据问题中的代码,您可能需要字符串的前两个字符。假设情况如此,那么您想要的代码是:
ccode = actnum.substring(0,2);
子串的Javadoc表示它返回第一个参数指定的索引中的字符,直到但不包括第二个参数指定的索引。
字符串的前两个字符是actnum.substring(0,2)。第一个参数是从0开始的。第二个参数也是从0开始的,但不包含在结果中。
答案 2 :(得分:0)
拥有一些示例值会很高兴...
但我怀疑问题是你只是使用
获得字符串的第二个字符
substring(1, 2)
第一个参数是起始索引(包括),第二个参数是结束索引(不包括)。
如果您想要第一个和第二个字符,则应使用substring(0, 2)
。
值得查阅文档:String.substring