2009-11-24 6 views
0

Я использую функцию подстроки в Java, и то, что я нахожу, - это если первый символ в подстроке равен нулю, она удаляется из новой строки. Есть ли способ предотвратить это?Подстрока Java отбрасывает первый символ, если ноль

Вот код, я имею проблемы с:

ccode = actnum.substring(1,2); 

Оба CCODE и actnum определяются как строки. Если требуется больше кода, проконсультируйтесь.

+2

Отправьте свой код. Без этого все угадывают, что вы можете делать неправильно. (Это сомнительно, что это ошибка в подстроке Java, потому что другие наверняка сообщили об этом до сих пор.) –

+0

Это ascii zero или 0x00? –

+0

Я не уверен, как я могу сказать разницу? Actnum (который может содержать буквы) может быть чем-то вроде 03KL352 и вводится в JSP. – tacotime

ответ

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 принимает два символьных индекса; первая - включена в новой подстроке, вторая - не — - это индекс символа после последнего символа в новой подстроке. Таким образом, длина новой подстроки равна end - start.

1

На основании кода, который у вас есть в вопросе, возможно, вам понадобятся первые два символа строки. Если предположить, что это будет так, то код, который вы хотите:

ccode = actnum.substring(0,2); 

Javadoc для подстроки состояния, что она возвращает символы из индекса, заданного первым аргументом вплоть до, но не включая, индекс определяется второй аргумент.

Первые два символа строки будут actnum.substring (0,2). Первый аргумент - 0. Второй аргумент также основан на 0, но не включен в результат.

0

Было бы неплохо иметь некоторые иллюстративные значения ...
, но я подозреваю, что проблема заключается в том, что вы только получаете второй символ строки с помощью
substring(1, 2)
первый параметр является начальный индекс (включительно) , второй - конечный индекс (эксклюзивный).

Если вы хотите использовать первый и второй символы, вы должны использовать substring(0, 2).

Стоит обратиться к документации: String.substring