String Substring преднамеренно удаляет символ 0 - PullRequest
0 голосов
/ 03 июня 2018

В настоящее время я работаю над функцией синтаксического анализа строк, и вдруг я обнаружил эту проблему.Например:

String data = "1234567890JOHN F DOE";

String ID = data.substring(0,9);
String Name = data.substring(10, 19);

ожидаемый вывод для идентификатора "1234567890", однако я получил только символы "123456789" и "0" удалены.

Есть ли какие-либофункцию, которую я могу использовать вместо substring(...)?

Ответы [ 4 ]

0 голосов
/ 03 июня 2018

Давайте разберемся с startIndex и endIndex, которые вам нужны для этого по коду:

String data = "1234567890JOHN F DOE";
String ID = data.substring(0,10);
String Name = data.substring(10, 20);
    System.out.println("ID:" + ID);
    System.out.println("Name: "+  Name);

Вывод:

ID: 1234567890

Name: JOHN F DOE
0 голосов
/ 03 июня 2018

Используя подстроку, вы можете просто сделать: str.substring (0,10);Это еще один способ:

 String pattern="\\d+";
    String text="1234567890JOHN F DOE";
    Pattern p=Pattern.compile(pattern);
    Matcher m=p.matcher(text);
    while (m.find()) {
        System.out.println(text.substring(m.start(), m.end()));
    }
0 голосов
/ 03 июня 2018

Как сказано в документах , конечный индекс substring(...) - это введенный индекс минус один.То, что вы хотите сделать, это иметь:

String data = "1234567890JOHN F DOE";
String ID = data.substring(0,10); 
String Name = data.substring(10, 20);

Вывод:

ID: 1234567890

Name: JOHN F DOE
0 голосов
/ 03 июня 2018

вы получите "123456789", потому что конечный параметр в методе substring(...) не является включающим, поэтому для получения "1234567890" вам нужно использовать data.substring(0,10):)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...