O formato de nome no título caso de Java ajudar por favor?
-
11-12-2019 - |
Pergunta
então eu tenho que escrever um código java para :
- Insira um nome
- O formato de nome em caso de título
- Entrada do segundo nome
- O formato de nome em caso de título
- Exiba-os em ordem alfabética
eu sei que O Java classe de Personagem tem os métodos isLowerCase(), isUpperCase, toLowerCase() e toUpperCase(), que você pode usar na revisão de um string, caractere por caractere.Se o primeiro caractere é minúsculo, converter para maiúsculas, e para cada uma sucessão de caracteres, se o caractere é maiúsculo, convertê-lo em minúsculas.
a questão é como eu verificar cada letra ?que tipo de variáveis e seqüências de caracteres deve ser contido ?você pode por favor ajudar?
Solução
Você deve usar StringBuilder
, whenver lidar com a manipulação de Seqüência de caracteres..Desta forma, você acaba de criar o menor número de objetos..
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);
}
Outras dicas
Você pode converter os primeiros caracteres para letras maiúsculas e minúsculas, em seguida, o restante da seqüência de caracteres:
String name = "jOhN";
name = name.substring(0, 1).toUpperCase() + name.substring(1).toLowerCase();
System.out.println(name); // John
Para atravessar Seqüências de caracteres usando apenas a classe String, iterar cada caractere em uma seqüência de caracteres.
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.
}
Esta pergunta respostas como "alterar" uma Seqüência de caracteres - você não pode.A classe StringBuilder fornece métodos convenientes para a edição de caracteres de índices específicos embora.
Parece que você quer certificar-se de que todos os nomes estão devidamente capitalizada, por exemplo:"martin vós" -> "Martin Vós" , caso em que você vai querer atravessar a entrada de Seqüência de caracteres para certificar-se de que o primeiro caractere da String de caracteres e depois de um espaço de capitalização.
Para colocar em ordem alfabética uma Lista, sugiro armazenar todos inseridos nomes para um ArrayList ou outras Coleções de objeto, a criação de um Comparador que implementa sistema de Comparação, e de passagem, que a Coleções.sort()...ver esta pergunta em termos vs Comparador.
Isso deve resolver
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
tem um método toCharArray
que retorna um recém-alocado char[]
de seus personagens.Lembre-se de que, enquanto String
s são imutável, elementos das matrizes podem ser reatribuídos.
Da mesma forma, String
tem um construtor que demora char[]
representando os personagens do recém-criado String
.
Para combinar esses, você tem uma maneira de obter a partir de um String
para um char[]
, modificar o char[]
, e de volta para um novo String
.
Isto pode ser conseguido em qualquer número de formas, a maioria dos quais vêm para baixo para os detalhes dos requisitos.
Mas a premissa básica é a mesma. String
é imutável (seu conteúdo não pode ser alterado), então você precisa de distância para extrair os caracteres da String
, converter o primeiro caractere para maiúsculo e reconstituir um novo String
do char
matriz.
Como já foi apontado, isso é relativo simples.
A outra coisa que você precisa fazer, é lidar com vários nomes (primeiro, último) em uma única passagem.Novamente, isso é relativamente simples.A parte difícil é quando você pode precisar para dividir uma string em várias condições, em seguida, você precisará recorrer a uma expressão regular.
Aqui está um exemplo muito simples.
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);