Java изменить полное имя на начальное. Фамилия - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть база данных имен игроков, которые мне нужно преобразовать, чтобы я мог с ними работать (например: мне нужно, чтобы Антонио Браун был преобразован в А. Брауна). Моя проблема в том, что есть также имена, которые состоят только из имени (например, Антонио). Поэтому я получаю ArrayIndexOutOfBoundsException: 1, есть ли другой способ получить то, что я хочу, и почему это происходит даже при условии, что условие stil разбито?

if(spalte[1].contains(" ")){
   String[] me = spalte[0].split(" ", 2);
   String na = me[0].substring(0);
    name = na + ". " + me[1];
} else {
    name = spalte[1];
}

1 Ответ

0 голосов
/ 03 сентября 2018

Во-первых, я настоятельно рекомендую вам сохранять форматированный код и правильно именованные переменные. Это помогает не только лучше понять фрагмент кода, но и облегчает отладку.

При работе с массивами и String::split вы должны быть осторожны с индексами, поскольку они могут легко переполниться.

Вам нужно, чтобы код обрабатывал несколько пробелов: Antonio Light Brown -> A. L. Brown? Шаги просты и практически одинаковы для любого количества имен:

  • Разделить пробелом
  • Сократить n-1 первые разделы
  • Конкатенация строки обратно

Вот код:

String split[] = name.trim().split(" ");     // Trim the multiple spaces inside to avoid empty parts
StringBuilder sb = new StringBuilder();      // StringBuilder builds the String

for (int i=0; i<split.length; i++) {                      // Iterate the parts
    if (i<split.length -1) {                              // If not the last part
        sb.append(split[i].charAt(0)).append(". ");       // Append the first letter and a dot
    } else sb.append(split[i]);                           // Or else keep the entire word
}

System.out.println(sb.toString());           // StringBuilder::toString returns a composed String

Гипотетически: как бы вы справились с такими именами, как O'Neil или de Anthony? Вы можете включить условную конкатенацию в for-loop.

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