2010-09-12 6 views
1
String lower = Name.toLowerCase(); 
int a = Name.indexOf(" ",0); 
String first = lower.substring(0, a); 
String last = lower.substring(a+1); 
char f = first.charAt(0); 
char l = last.charAt(0); 
f = Character.toUpperCase(f); 
l = Character.toUpperCase(l); 
String newname = last +" "+ first; 
System.out.println(newname); 

Je veux prendre les variables F et L et remplacer les premières lettres minuscules dans le dernier et le premier afin qu'elles soient majuscules. Comment puis-je faire ceci? Je veux simplement remplacer la première lettre du nom et prénom avec le omble chevalier premier et dernierRemplacer une lettre dans une chaîne avec un caractère

Répondre

0

EDIT:
Vous pouvez également utiliser une chaîne tokenizer pour obtenir les noms comme:

StringTokenizer st = new StringTokenizer(Name); 
String fullName = ""; 
String currentName; 
while (st.hasMoreTokens()) { 
    /* add spaces between each name */ 
    if(fullName != "") fullName += " "; 
    currentName = st.nextToken(); 
    fullName += currentName.substring(0,0).toUpperCase() + currentName.substring(1); 
} 
+0

Il remplacera tous les oldChar par newChar –

+0

@Colin: Je pensais que replaceAll était celui qui a remplacé tous, mais après avoir vérifié l'API, je vois que vous avez raison. De toute façon, remplacer n'est pas la meilleure option. Réponse ajustée. – gMale

3

si vous essayez de faire ce que je pense que vous êtes, vous devriez envisager d'utiliser la bibliothèque apache commons-lang, puis regardez:

WordUtils.capitalize

de toute évidence, cela est également open source, donc pour la meilleure solution à vos devoirs je jetterais un coup d'oeil au code source.

Cependant, si je devais écrire à partir de zéro (et des performances optimales était pas le but), voici comment je l'aborder:

public String capitalize(String input) 
{ 
    // 1. split on the negated 'word' matcher (regular expressions) 
    String[] words = input.toLowerCase().split("\\W"); 
    StringBuffer end = new StringBuffer(); 
    for (String word : words) 
    { 
     if (word.length == 0) 
      continue; 
     end.append(" "); 
     end.append(Character.toUpperCase(word.charAt(0))); 
     end.append(word.substring(1)); 
    } 
    // delete the first space character 
    return end.deleteCharAt(0).toString(); 
} 
0

Bien qu'il y ait des moyens plus efficaces de le faire, vous avez presque l'avez . Vous auriez juste besoin de concaténer les caractères majuscules avec le prénom et le nom de famille, le premier caractère.

String newname = "" + l + last.subString(1) + " " + f + first.subString(1); 
0
String name = "firstname lastname"; 
//match with letter in beginning or a letter after a space 
Matcher matcher = Pattern.compile("^\\w| \\w").matcher(name); 
StringBuffer b=new StringBuffer(); 
while(matcher.find()) 
    matcher.appendReplacement(b,matcher.group().toUpperCase()); 
matcher.appendTail(b); 
name=b.toString();//Modified Name 
Questions connexes