Форматировать имя в регистре заголовков. Java, помогите, пожалуйста?
-
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);