Форматировать имя в регистре заголовков. Java, помогите, пожалуйста?

StackOverflow https://stackoverflow.com//questions/12656941

  •  11-12-2019
  •  | 
  •  

Вопрос

поэтому мне нужно написать Java-код:

  • Введите имя
  • Форматировать имя в регистре заголовков
  • Введите второе имя
  • Форматировать имя в регистре заголовков
  • Отобразите их в алфавитном порядке

я знаю, что класс символов Java имеет методы isLowerCase(), isUpperCase, toLowerCase() и toUpperCase(), которые вы можете использовать при просмотре строки, символ за символом.Если первый символ в нижнем регистре, преобразуйте его в верхний регистр, а каждый последующий символ, если символ в верхнем регистре, преобразуйте его в нижний регистр.

вопрос в том, как мне проверить каждую букву?какие переменные и строки он должен содержать?можете пожалуйста помочь?

Это было полезно?

Решение

Вы должны использовать StringBuilder, когда разбираться со строковыми манипуляциями .. Таким образом, вы в конечном итоге создаете меньший номер объектов ..

StringBuilder s1 = new StringBuilder("rohit");
StringBuilder s2 = new StringBuilder("jain");

s1.replace(0, s1.length(), s1.toString().toLowerCase());
s2.replace(0, s2.length(), s2.toString().toLowerCase());            

s1.setCharAt(0, Character.toTitleCase(s1.charAt(0)));
s2.setCharAt(0, Character.toTitleCase(s2.charAt(0)));

if (s1.toString().compareTo(s2.toString()) >= 0) {
    System.out.println(s2 + " " + s1);

} else {
    System.out.println(s1 + " " + s2);
}
.

Другие советы

Вы можете преобразовать первый символ в верхний регистр, а затем в нижнем регистре остаток строки:

String name = "jOhN";
name = name.substring(0, 1).toUpperCase() + name.substring(1).toLowerCase(); 
System.out.println(name); // John
.

для прохождения строк, используя только класс String, итерации через каждый символ в строке.

String s = "tester";
int size = s.length(); // length() is the number of characters in the string
for( int i = 0; i < size;  i++) {
    // s.charAt(i) gets the character at the ith code point.
}
.

Этот вопрос ответы Как «изменить» строку - вы не можете. Класс StringBuilder предоставляет удобные методы редактирования символов по конкретным индексам.

Похоже, вы хотите убедиться, что все имена правильно капитализированы, например: «Martin Ye» -> «Martin Ye», в этом случае вы захотите пройти ввод строки, чтобы убедиться, что первый символ Строка и символы после того, как пространство капитализировано.

Для алфавита, я предлагаю хранить все введенные имена в ArrayList или некоторые другие объекты коллекций, создавая компаратор, который реализует компаратор, и передает это для коллекций .sort () ... см. Это вопрос на сопоставимом VS-компараторе.

Это должно исправить это

List<String> nameList = new ArrayList<String>();
    nameList.add(titleCase("john smith"));
    nameList.add(titleCase("tom cruise"));
    nameList.add(titleCase("johnsmith"));
    Collections.sort(nameList);
    for (String name : nameList) {
        System.out.println("name=" + name);
    }

public static String titleCase(String realName) {
    String space = " ";
    String[] names = realName.split(space);
    StringBuilder b = new StringBuilder();
    for (String name : names) {
        if (name == null || name.isEmpty()) {
            b.append(space);
            continue;
        }
        b.append(name.substring(0, 1).toUpperCase())
                .append(name.substring(1).toLowerCase())
                .append(space);
    }
    return b.toString();
}
.

String есть метод toCharArray который возвращает вновь выделенный char[] своих персонажей.Помните, что пока Stringэто неизменный, элементы массивов можно переназначать.

Сходным образом, String есть конструктор это требует char[] представляющие персонажей вновь созданного String.

Таким образом, объединив их, у вас есть один способ получить от String к char[], измените char[], и вернемся к новому String.

Этого можно добиться разными способами, большинство из которых сводятся к детализации требований.

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

Как уже отмечалось, это относительно просто.

Еще одна вещь, которую вам, возможно, придется сделать, — это обработать несколько имен (первое, последнее) за один проход.Опять же, это относительно просто.Сложнее всего то, что когда вам может потребоваться разделить строку по нескольким условиям, вам придется прибегнуть к регулярному выражению.

Вот очень простой пример.

String name = "this is a test";
String[] parts = name.split(" ");
StringBuilder sb = new StringBuilder(64);
for (String part : parts) {
    char[] chars = part.toLowerCase().toCharArray();
    chars[0] = Character.toUpperCase(chars[0]);

    sb.append(new String(chars)).append(" ");
}

name = sb.toString().trim();
System.out.println(name);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top