如果为零,Java子字符串将丢弃第一个字符

时间:2009-11-24 20:15:18

标签: java

我在Java中使用substring函数,我发现如果子字符串中的第一个字符为零,则从新字符串中删除它。有办法防止这种情况吗?

以下是我遇到问题的代码:

ccode = actnum.substring(1,2);

ccode和actnum都被定义为字符串。如果需要更多代码,请告知。

3 个答案:

答案 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